var DWLive = function() {
	"use strict";

	function e(e, t) {
		var n = Object.keys(e);
		if (Object.getOwnPropertySymbols) {
			var i = Object.getOwnPropertySymbols(e);
			t && (i = i.filter((function(t) {
				return Object.getOwnPropertyDescriptor(e, t).enumerable
			}))), n.push.apply(n, i)
		}
		return n
	}

	function t(t) {
		for (var n = 1; n < arguments.length; n++) {
			var i = null != arguments[n] ? arguments[n] : {};
			n % 2 ? e(Object(i), !0).forEach((function(e) {
				c(t, e, i[e])
			})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object
				.getOwnPropertyDescriptors(i)) : e(Object(i)).forEach((function(e) {
				Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e))
			}))
		}
		return t
	}

	function n(e) {
		return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
			return typeof e
		} : function(e) {
			return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ?
				"symbol" : typeof e
		}, n(e)
	}

	function i(e, t, n, i, r, o, a) {
		try {
			var s = e[o](a),
				c = s.value
		} catch (e) {
			return void n(e)
		}
		s.done ? t(c) : Promise.resolve(c).then(i, r)
	}

	function r(e) {
		return function() {
			var t = this,
				n = arguments;
			return new Promise((function(r, o) {
				var a = e.apply(t, n);

				function s(e) {
					i(a, r, o, s, c, "next", e)
				}

				function c(e) {
					i(a, r, o, s, c, "throw", e)
				}
				s(void 0)
			}))
		}
	}

	function o(e, t) {
		if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
	}

	function a(e, t) {
		for (var n = 0; n < t.length; n++) {
			var i = t[n];
			i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object
				.defineProperty(e, i.key, i)
		}
	}

	function s(e, t, n) {
		return t && a(e.prototype, t), n && a(e, n), e
	}

	function c(e, t, n) {
		return t in e ? Object.defineProperty(e, t, {
			value: n,
			enumerable: !0,
			configurable: !0,
			writable: !0
		}) : e[t] = n, e
	}

	function u(e, t) {
		return function(e) {
			if (Array.isArray(e)) return e
		}(e) || function(e, t) {
			var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
			if (null == n) return;
			var i, r, o = [],
				a = !0,
				s = !1;
			try {
				for (n = n.call(e); !(a = (i = n.next()).done) && (o.push(i.value), !t || o.length !== t); a = !
					0);
			} catch (e) {
				s = !0, r = e
			} finally {
				try {
					a || null == n.return || n.return()
				} finally {
					if (s) throw r
				}
			}
			return o
		}(e, t) || function(e, t) {
			if (!e) return;
			if ("string" == typeof e) return d(e, t);
			var n = Object.prototype.toString.call(e).slice(8, -1);
			"Object" === n && e.constructor && (n = e.constructor.name);
			if ("Map" === n || "Set" === n) return Array.from(e);
			if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return d(e, t)
		}(e, t) || function() {
			throw new TypeError(
				"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
				)
		}()
	}

	function d(e, t) {
		(null == t || t > e.length) && (t = e.length);
		for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
		return i
	}
	var l = function(e) {
			if (null == e) throw TypeError("Can't call method on  " + e);
			return e
		},
		p = function(e) {
			return Object(l(e))
		},
		f = {}.hasOwnProperty,
		v = function(e, t) {
			return f.call(e, t)
		},
		h = {}.toString,
		m = function(e) {
			return h.call(e).slice(8, -1)
		},
		y = Object("z").propertyIsEnumerable(0) ? Object : function(e) {
			return "String" == m(e) ? e.split("") : Object(e)
		},
		g = function(e) {
			return y(l(e))
		},
		R = Math.ceil,
		_ = Math.floor,
		w = function(e) {
			return isNaN(e = +e) ? 0 : (e > 0 ? _ : R)(e)
		},
		D = Math.min,
		E = function(e) {
			return e > 0 ? D(w(e), 9007199254740991) : 0
		},
		S = Math.max,
		L = Math.min;

	function T(e, t) {
		return e(t = {
			exports: {}
		}, t.exports), t.exports
	}
	var b, O = T((function(e) {
			var t = e.exports = {
				version: "2.6.10"
			};
			"number" == typeof __e && (__e = t)
		})),
		C = (O.version, T((function(e) {
			var t = e.exports = "undefined" != typeof window && window.Math == Math ? window :
				"undefined" != typeof self && self.Math == Math ? self : Function("return this")();
			"number" == typeof __g && (__g = t)
		}))),
		k = T((function(e) {
			var t = "__core-js_shared__",
				n = C[t] || (C[t] = {});
			(e.exports = function(e, t) {
				return n[e] || (n[e] = void 0 !== t ? t : {})
			})("versions", []).push({
				version: O.version,
				mode: "pure",
				copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
			})
		})),
		P = 0,
		I = Math.random(),
		W = function(e) {
			return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++P + I).toString(36))
		},
		M = k("keys"),
		N = function(e) {
			return M[e] || (M[e] = W(e))
		},
		x = (b = !1, function(e, t, n) {
			var i, r = g(e),
				o = E(r.length),
				a = function(e, t) {
					return (e = w(e)) < 0 ? S(e + t, 0) : L(e, t)
				}(n, o);
			if (b && t != t) {
				for (; o > a;)
					if ((i = r[a++]) != i) return !0
			} else
				for (; o > a; a++)
					if ((b || a in r) && r[a] === t) return b || a || 0;
			return !b && -1
		}),
		A = N("IE_PROTO"),
		j = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(
			","),
		U = Object.keys || function(e) {
			return function(e, t) {
				var n, i = g(e),
					r = 0,
					o = [];
				for (n in i) n != A && v(i, n) && o.push(n);
				for (; t.length > r;) v(i, n = t[r++]) && (~x(o, n) || o.push(n));
				return o
			}(e, j)
		},
		V = function(e) {
			if ("function" != typeof e) throw TypeError(e + " is not a function!");
			return e
		},
		B = function(e, t, n) {
			if (V(e), void 0 === t) return e;
			switch (n) {
				case 1:
					return function(n) {
						return e.call(t, n)
					};
				case 2:
					return function(n, i) {
						return e.call(t, n, i)
					};
				case 3:
					return function(n, i, r) {
						return e.call(t, n, i, r)
					}
			}
			return function() {
				return e.apply(t, arguments)
			}
		},
		F = function(e) {
			return "object" == typeof e ? null !== e : "function" == typeof e
		},
		H = function(e) {
			if (!F(e)) throw TypeError(e + " is not an object!");
			return e
		},
		G = function(e) {
			try {
				return !!e()
			} catch (e) {
				return !0
			}
		},
		q = !G((function() {
			return 7 != Object.defineProperty({}, "a", {
				get: function() {
					return 7
				}
			}).a
		})),
		J = C.document,
		Q = F(J) && F(J.createElement),
		z = function(e) {
			return Q ? J.createElement(e) : {}
		},
		K = !q && !G((function() {
			return 7 != Object.defineProperty(z("div"), "a", {
				get: function() {
					return 7
				}
			}).a
		})),
		X = Object.defineProperty,
		Y = {
			f: q ? Object.defineProperty : function(e, t, n) {
				if (H(e), t = function(e, t) {
						if (!F(e)) return e;
						var n, i;
						if (t && "function" == typeof(n = e.toString) && !F(i = n.call(e))) return i;
						if ("function" == typeof(n = e.valueOf) && !F(i = n.call(e))) return i;
						if (!t && "function" == typeof(n = e.toString) && !F(i = n.call(e))) return i;
						throw TypeError("Can't convert object to primitive value")
					}(t, !0), H(n), K) try {
					return X(e, t, n)
				} catch (e) {}
				if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
				return "value" in n && (e[t] = n.value), e
			}
		},
		Z = function(e, t) {
			return {
				enumerable: !(1 & e),
				configurable: !(2 & e),
				writable: !(4 & e),
				value: t
			}
		},
		ee = q ? function(e, t, n) {
			return Y.f(e, t, Z(1, n))
		} : function(e, t, n) {
			return e[t] = n, e
		},
		te = function(e, t, n) {
			var i, r, o, a = e & te.F,
				s = e & te.G,
				c = e & te.S,
				u = e & te.P,
				d = e & te.B,
				l = e & te.W,
				p = s ? O : O[t] || (O[t] = {}),
				f = p.prototype,
				h = s ? C : c ? C[t] : (C[t] || {}).prototype;
			for (i in s && (n = t), n)(r = !a && h && void 0 !== h[i]) && v(p, i) || (o = r ? h[i] : n[i], p[i] =
				s && "function" != typeof h[i] ? n[i] : d && r ? B(o, C) : l && h[i] == o ? function(e) {
					var t = function(t, n, i) {
						if (this instanceof e) {
							switch (arguments.length) {
								case 0:
									return new e;
								case 1:
									return new e(t);
								case 2:
									return new e(t, n)
							}
							return new e(t, n, i)
						}
						return e.apply(this, arguments)
					};
					return t.prototype = e.prototype, t
				}(o) : u && "function" == typeof o ? B(Function.call, o) : o, u && ((p.virtual || (p
					.virtual = {}))[i] = o, e & te.R && f && !f[i] && ee(f, i, o)))
		};
	te.F = 1, te.G = 2, te.S = 4, te.P = 8, te.B = 16, te.W = 32, te.U = 64, te.R = 128;
	var ne = te;
	! function(e, t) {
		var n = (O.Object || {})[e] || Object[e],
			i = {};
		i[e] = t(n), ne(ne.S + ne.F * G((function() {
			n(1)
		})), "Object", i)
	}("keys", (function() {
		return function(e) {
			return U(p(e))
		}
	}));
	var ie = O.Object.keys,
		re = O.JSON || (O.JSON = {
			stringify: JSON.stringify
		}),
		oe = function(e) {
			return re.stringify.apply(re, arguments)
		},
		ae = T((function(e) {
			var t = e.exports = "undefined" != typeof window && window.Math == Math ? window :
				"undefined" != typeof self && self.Math == Math ? self : Function("return this")();
			"number" == typeof __g && (__g = t)
		})),
		se = T((function(e) {
			var t = e.exports = {
				version: "2.6.10"
			};
			"number" == typeof __e && (__e = t)
		})),
		ce = (se.version, function(e) {
			return "object" == typeof e ? null !== e : "function" == typeof e
		}),
		ue = function(e) {
			if (!ce(e)) throw TypeError(e + " is not an object!");
			return e
		},
		de = function(e) {
			try {
				return !!e()
			} catch (e) {
				return !0
			}
		},
		le = !de((function() {
			return 7 != Object.defineProperty({}, "a", {
				get: function() {
					return 7
				}
			}).a
		})),
		pe = ae.document,
		fe = ce(pe) && ce(pe.createElement),
		ve = function(e) {
			return fe ? pe.createElement(e) : {}
		},
		he = !le && !de((function() {
			return 7 != Object.defineProperty(ve("div"), "a", {
				get: function() {
					return 7
				}
			}).a
		})),
		me = function(e, t) {
			if (!ce(e)) return e;
			var n, i;
			if (t && "function" == typeof(n = e.toString) && !ce(i = n.call(e))) return i;
			if ("function" == typeof(n = e.valueOf) && !ce(i = n.call(e))) return i;
			if (!t && "function" == typeof(n = e.toString) && !ce(i = n.call(e))) return i;
			throw TypeError("Can't convert object to primitive value")
		},
		ye = Object.defineProperty,
		ge = {
			f: le ? Object.defineProperty : function(e, t, n) {
				if (ue(e), t = me(t, !0), ue(n), he) try {
					return ye(e, t, n)
				} catch (e) {}
				if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
				return "value" in n && (e[t] = n.value), e
			}
		},
		Re = function(e, t) {
			return {
				enumerable: !(1 & e),
				configurable: !(2 & e),
				writable: !(4 & e),
				value: t
			}
		},
		_e = le ? function(e, t, n) {
			return ge.f(e, t, Re(1, n))
		} : function(e, t, n) {
			return e[t] = n, e
		},
		we = {}.hasOwnProperty,
		De = function(e, t) {
			return we.call(e, t)
		},
		Ee = 0,
		Se = Math.random(),
		Le = function(e) {
			return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++Ee + Se).toString(36))
		},
		Te = T((function(e) {
			var t = "__core-js_shared__",
				n = ae[t] || (ae[t] = {});
			(e.exports = function(e, t) {
				return n[e] || (n[e] = void 0 !== t ? t : {})
			})("versions", []).push({
				version: se.version,
				mode: "global",
				copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
			})
		})),
		be = Te("native-function-to-string", Function.toString),
		Oe = T((function(e) {
			var t = Le("src"),
				n = "toString",
				i = ("" + be).split(n);
			se.inspectSource = function(e) {
				return be.call(e)
			}, (e.exports = function(e, n, r, o) {
				var a = "function" == typeof r;
				a && (De(r, "name") || _e(r, "name", n)), e[n] !== r && (a && (De(r, t) || _e(r, t,
						e[n] ? "" + e[n] : i.join(String(n)))), e === ae ? e[n] = r : o ? e[n] ?
					e[n] = r : _e(e, n, r) : (delete e[n], _e(e, n, r)))
			})(Function.prototype, n, (function() {
				return "function" == typeof this && this[t] || be.call(this)
			}))
		})),
		Ce = function(e) {
			if ("function" != typeof e) throw TypeError(e + " is not a function!");
			return e
		},
		ke = function(e, t, n) {
			if (Ce(e), void 0 === t) return e;
			switch (n) {
				case 1:
					return function(n) {
						return e.call(t, n)
					};
				case 2:
					return function(n, i) {
						return e.call(t, n, i)
					};
				case 3:
					return function(n, i, r) {
						return e.call(t, n, i, r)
					}
			}
			return function() {
				return e.apply(t, arguments)
			}
		},
		Pe = function(e, t, n) {
			var i, r, o, a, s = e & Pe.F,
				c = e & Pe.G,
				u = e & Pe.S,
				d = e & Pe.P,
				l = e & Pe.B,
				p = c ? ae : u ? ae[t] || (ae[t] = {}) : (ae[t] || {}).prototype,
				f = c ? se : se[t] || (se[t] = {}),
				v = f.prototype || (f.prototype = {});
			for (i in c && (n = t), n) o = ((r = !s && p && void 0 !== p[i]) ? p : n)[i], a = l && r ? ke(o, ae) :
				d && "function" == typeof o ? ke(Function.call, o) : o, p && Oe(p, i, o, e & Pe.U), f[i] != o && _e(
					f, i, a), d && v[i] != o && (v[i] = o)
		};
	ae.core = se, Pe.F = 1, Pe.G = 2, Pe.S = 4, Pe.P = 8, Pe.B = 16, Pe.W = 32, Pe.U = 64, Pe.R = 128;
	var Ie = Pe,
		We = {}.toString,
		Me = function(e) {
			return We.call(e).slice(8, -1)
		},
		Ne = T((function(e) {
			var t = Te("wks"),
				n = ae.Symbol,
				i = "function" == typeof n;
			(e.exports = function(e) {
				return t[e] || (t[e] = i && n[e] || (i ? n : Le)("Symbol." + e))
			}).store = t
		})),
		xe = Ne("match"),
		Ae = function(e) {
			var t;
			return ce(e) && (void 0 !== (t = e[xe]) ? !!t : "RegExp" == Me(e))
		},
		je = function(e) {
			if (null == e) throw TypeError("Can't call method on  " + e);
			return e
		},
		Ue = function(e, t, n) {
			if (Ae(t)) throw TypeError("String#" + n + " doesn't accept regex!");
			return String(je(e))
		},
		Ve = Ne("match"),
		Be = "includes";
	Ie(Ie.P + Ie.F * function(e) {
		var t = /./;
		try {
			"/./" [e](t)
		} catch (n) {
			try {
				return t[Ve] = !1, !"/./" [e](t)
			} catch (e) {}
		}
		return !0
	}(Be), "String", {
		includes: function(e) {
			return !!~Ue(this, e, Be).indexOf(e, arguments.length > 1 ? arguments[1] : void 0)
		}
	});
	var Fe = Object("z").propertyIsEnumerable(0) ? Object : function(e) {
			return "String" == Me(e) ? e.split("") : Object(e)
		},
		He = function(e) {
			return Fe(je(e))
		},
		Ge = Math.ceil,
		qe = Math.floor,
		Je = function(e) {
			return isNaN(e = +e) ? 0 : (e > 0 ? qe : Ge)(e)
		},
		Qe = Math.min,
		ze = function(e) {
			return e > 0 ? Qe(Je(e), 9007199254740991) : 0
		},
		$e = Math.max,
		Ke = Math.min,
		Xe = function(e, t) {
			return (e = Je(e)) < 0 ? $e(e + t, 0) : Ke(e, t)
		},
		Ye = function(e) {
			return function(t, n, i) {
				var r, o = He(t),
					a = ze(o.length),
					s = Xe(i, a);
				if (e && n != n) {
					for (; a > s;)
						if ((r = o[s++]) != r) return !0
				} else
					for (; a > s; s++)
						if ((e || s in o) && o[s] === n) return e || s || 0;
				return !e && -1
			}
		},
		Ze = Ne("unscopables"),
		et = Array.prototype;
	null == et[Ze] && _e(et, Ze, {});
	var tt = function(e) {
			et[Ze][e] = !0
		},
		nt = Ye(!0);
	Ie(Ie.P, "Array", {
		includes: function(e) {
			return nt(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	}), tt("includes");
	var it = function(e) {
			return Object(je(e))
		},
		rt = function(e) {
			return function(t, n) {
				var i, r, o = String(je(t)),
					a = Je(n),
					s = o.length;
				return a < 0 || a >= s ? e ? "" : void 0 : (i = o.charCodeAt(a)) < 55296 || i > 56319 || a +
					1 === s || (r = o.charCodeAt(a + 1)) < 56320 || r > 57343 ? e ? o.charAt(a) : i : e ? o
					.slice(a, a + 2) : r - 56320 + (i - 55296 << 10) + 65536
			}
		},
		ot = rt(!0),
		at = function(e, t, n) {
			return t + (n ? ot(e, t).length : 1)
		},
		st = Ne("toStringTag"),
		ct = "Arguments" == Me(function() {
			return arguments
		}()),
		ut = function(e) {
			var t, n, i;
			return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof(n = function(e, t) {
					try {
						return e[t]
					} catch (e) {}
				}(t = Object(e), st)) ? n : ct ? Me(t) : "Object" == (i = Me(t)) && "function" == typeof t.callee ?
				"Arguments" : i
		},
		dt = RegExp.prototype.exec,
		lt = function(e, t) {
			var n = e.exec;
			if ("function" == typeof n) {
				var i = n.call(e, t);
				if ("object" != typeof i) throw new TypeError(
					"RegExp exec method returned something other than an Object or null");
				return i
			}
			if ("RegExp" !== ut(e)) throw new TypeError("RegExp#exec called on incompatible receiver");
			return dt.call(e, t)
		},
		pt = function() {
			var e = ue(this),
				t = "";
			return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.unicode && (t +=
				"u"), e.sticky && (t += "y"), t
		},
		ft = RegExp.prototype.exec,
		vt = String.prototype.replace,
		ht = ft,
		mt = function() {
			var e = /a/,
				t = /b*/g;
			return ft.call(e, "a"), ft.call(t, "a"), 0 !== e.lastIndex || 0 !== t.lastIndex
		}(),
		yt = void 0 !== /()??/.exec("")[1];
	(mt || yt) && (ht = function(e) {
		var t, n, i, r, o = this;
		return yt && (n = new RegExp("^" + o.source + "$(?!\\s)", pt.call(o))), mt && (t = o.lastIndex), i = ft
			.call(o, e), mt && i && (o.lastIndex = o.global ? i.index + i[0].length : t), yt && i && i.length >
			1 && vt.call(i[0], n, (function() {
				for (r = 1; r < arguments.length - 2; r++) void 0 === arguments[r] && (i[r] = void 0)
			})), i
	});
	var gt = ht;
	Ie({
		target: "RegExp",
		proto: !0,
		forced: gt !== /./.exec
	}, {
		exec: gt
	});
	var Rt = Ne("species"),
		_t = !de((function() {
			var e = /./;
			return e.exec = function() {
				var e = [];
				return e.groups = {
					a: "7"
				}, e
			}, "7" !== "".replace(e, "$<a>")
		})),
		wt = function() {
			var e = /(?:)/,
				t = e.exec;
			e.exec = function() {
				return t.apply(this, arguments)
			};
			var n = "ab".split(e);
			return 2 === n.length && "a" === n[0] && "b" === n[1]
		}(),
		Dt = function(e, t, n) {
			var i = Ne(e),
				r = !de((function() {
					var t = {};
					return t[i] = function() {
						return 7
					}, 7 != "" [e](t)
				})),
				o = r ? !de((function() {
					var t = !1,
						n = /a/;
					return n.exec = function() {
						return t = !0, null
					}, "split" === e && (n.constructor = {}, n.constructor[Rt] = function() {
						return n
					}), n[i](""), !t
				})) : void 0;
			if (!r || !o || "replace" === e && !_t || "split" === e && !wt) {
				var a = /./ [i],
					s = n(je, i, "" [e], (function(e, t, n, i, o) {
						return t.exec === gt ? r && !o ? {
							done: !0,
							value: a.call(t, n, i)
						} : {
							done: !0,
							value: e.call(n, t, i)
						} : {
							done: !1
						}
					})),
					c = s[0],
					u = s[1];
				Oe(String.prototype, e, c), _e(RegExp.prototype, i, 2 == t ? function(e, t) {
					return u.call(e, this, t)
				} : function(e) {
					return u.call(e, this)
				})
			}
		},
		Et = Math.max,
		St = Math.min,
		Lt = Math.floor,
		Tt = /\$([$&`']|\d\d?|<[^>]*>)/g,
		bt = /\$([$&`']|\d\d?)/g;
	Dt("replace", 2, (function(e, t, n, i) {
		return [function(i, r) {
			var o = e(this),
				a = null == i ? void 0 : i[t];
			return void 0 !== a ? a.call(i, o, r) : n.call(String(o), i, r)
		}, function(e, t) {
			var o = i(n, e, this, t);
			if (o.done) return o.value;
			var a = ue(e),
				s = String(this),
				c = "function" == typeof t;
			c || (t = String(t));
			var u = a.global;
			if (u) {
				var d = a.unicode;
				a.lastIndex = 0
			}
			for (var l = [];;) {
				var p = lt(a, s);
				if (null === p) break;
				if (l.push(p), !u) break;
				"" === String(p[0]) && (a.lastIndex = at(s, ze(a.lastIndex), d))
			}
			for (var f, v = "", h = 0, m = 0; m < l.length; m++) {
				p = l[m];
				for (var y = String(p[0]), g = Et(St(Je(p.index), s.length), 0), R = [], _ =
					1; _ < p.length; _++) R.push(void 0 === (f = p[_]) ? f : String(f));
				var w = p.groups;
				if (c) {
					var D = [y].concat(R, g, s);
					void 0 !== w && D.push(w);
					var E = String(t.apply(void 0, D))
				} else E = r(y, s, g, R, w, t);
				g >= h && (v += s.slice(h, g) + E, h = g + y.length)
			}
			return v + s.slice(h)
		}];

		function r(e, t, i, r, o, a) {
			var s = i + e.length,
				c = r.length,
				u = bt;
			return void 0 !== o && (o = it(o), u = Tt), n.call(a, u, (function(n, a) {
				var u;
				switch (a.charAt(0)) {
					case "$":
						return "$";
					case "&":
						return e;
					case "`":
						return t.slice(0, i);
					case "'":
						return t.slice(s);
					case "<":
						u = o[a.slice(1, -1)];
						break;
					default:
						var d = +a;
						if (0 === d) return n;
						if (d > c) {
							var l = Lt(d / 10);
							return 0 === l ? n : l <= c ? void 0 === r[l - 1] ? a.charAt(
								1) : r[l - 1] + a.charAt(1) : n
						}
						u = r[d - 1]
				}
				return void 0 === u ? "" : u
			}))
		}
	}));
	var Ot, Ct = T((function(e, t) {
		/*! aliyun rts sdk - ver2.2.3 created:2022/7/8 16:09:18 */
		window,
		e.exports = function(e) {
			var t = {};

			function n(i) {
				if (t[i]) return t[i].exports;
				var r = t[i] = {
					i: i,
					l: !1,
					exports: {}
				};
				return e[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports
			}
			return n.m = e, n.c = t, n.d = function(e, t, i) {
				n.o(e, t) || Object.defineProperty(e, t, {
					enumerable: !0,
					get: i
				})
			}, n.r = function(e) {
				"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e,
					Symbol.toStringTag, {
						value: "Module"
					}), Object.defineProperty(e, "__esModule", {
					value: !0
				})
			}, n.t = function(e, t) {
				if (1 & t && (e = n(e)), 8 & t) return e;
				if (4 & t && "object" == typeof e && e && e.__esModule) return e;
				var i = Object.create(null);
				if (n.r(i), Object.defineProperty(i, "default", {
						enumerable: !0,
						value: e
					}), 2 & t && "string" != typeof e)
					for (var r in e) n.d(i, r, function(t) {
						return e[t]
					}.bind(null, r));
				return i
			}, n.n = function(e) {
				var t = e && e.__esModule ? function() {
					return e.default
				} : function() {
					return e
				};
				return n.d(t, "a", t), t
			}, n.o = function(e, t) {
				return Object.prototype.hasOwnProperty.call(e, t)
			}, n.p = "", n(n.s = 23)
		}([function(e, t, n) {
			var i = n(13),
				r = Object.prototype.toString;

			function o(e) {
				return "[object Array]" === r.call(e)
			}

			function a(e) {
				return void 0 === e
			}

			function s(e) {
				return null !== e && "object" == typeof e
			}

			function c(e) {
				if ("[object Object]" !== r.call(e)) return !1;
				var t = Object.getPrototypeOf(e);
				return null === t || t === Object.prototype
			}

			function u(e) {
				return "[object Function]" === r.call(e)
			}

			function d(e, t) {
				if (null != e)
					if ("object" != typeof e && (e = [e]), o(e))
						for (var n = 0, i = e.length; n < i; n++) t.call(null, e[n], n, e);
					else
						for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.call(
							null, e[r], r, e)
			}
			e.exports = {
				isArray: o,
				isArrayBuffer: function(e) {
					return "[object ArrayBuffer]" === r.call(e)
				},
				isBuffer: function(e) {
					return null !== e && !a(e) && null !== e.constructor && !a(e
							.constructor) && "function" == typeof e.constructor
						.isBuffer && e.constructor.isBuffer(e)
				},
				isFormData: function(e) {
					return "undefined" != typeof FormData && e instanceof FormData
				},
				isArrayBufferView: function(e) {
					return "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ?
						ArrayBuffer.isView(e) : e && e.buffer && e
						.buffer instanceof ArrayBuffer
				},
				isString: function(e) {
					return "string" == typeof e
				},
				isNumber: function(e) {
					return "number" == typeof e
				},
				isObject: s,
				isPlainObject: c,
				isUndefined: a,
				isDate: function(e) {
					return "[object Date]" === r.call(e)
				},
				isFile: function(e) {
					return "[object File]" === r.call(e)
				},
				isBlob: function(e) {
					return "[object Blob]" === r.call(e)
				},
				isFunction: u,
				isStream: function(e) {
					return s(e) && u(e.pipe)
				},
				isURLSearchParams: function(e) {
					return "undefined" != typeof URLSearchParams &&
						e instanceof URLSearchParams
				},
				isStandardBrowserEnv: function() {
					return ("undefined" == typeof navigator || "ReactNative" !==
							navigator.product && "NativeScript" !== navigator.product &&
							"NS" !== navigator.product) && "undefined" !=
						typeof window && "undefined" != typeof document
				},
				forEach: d,
				merge: function e() {
					var t = {};

					function n(n, i) {
						c(t[i]) && c(n) ? t[i] = e(t[i], n) : c(n) ? t[i] = e({}, n) :
							o(n) ? t[i] = n.slice() : t[i] = n
					}
					for (var i = 0, r = arguments.length; i < r; i++) d(arguments[i],
					n);
					return t
				},
				extend: function(e, t, n) {
					return d(t, (function(t, r) {
						e[r] = n && "function" == typeof t ? i(t, n) : t
					})), e
				},
				trim: function(e) {
					return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "")
				},
				stripBOM: function(e) {
					return 65279 === e.charCodeAt(0) && (e = e.slice(1)), e
				}
			}
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			});
			var i = function() {
				function e() {
					this._eventMap = {}
				}
				return e.prototype.listeners = function(e) {
					return this._eventMap[e] || []
				}, e.prototype.emit = function(e) {
					for (var t = this, n = [], i = 1; i < arguments.length; i++) n[i -
						1] = arguments[i];
					var r = this._eventMap[e];
					return !!Array.isArray(r) && (r.forEach((function(e) {
						return e.apply(t, n)
					})), !0)
				}, e.prototype.off = function(e, t) {
					var n = this._eventMap[e];
					return Array.isArray(n) && (this._eventMap[e] = n.filter((function(
						e) {
						return e !== t
					}))), this
				}, e.prototype.removeAllListeners = function(e) {
					return void 0 === e ? this._eventMap = {} : this._eventMap[e] && (
						this._eventMap[e] = []), this
				}, e.prototype.on = function(e, t) {
					return this._eventMap[e] ? this._eventMap[e].push(t) : this
						._eventMap[e] = [t], this
				}, e.prototype.once = function(e, t) {
					var n = this,
						i = function() {
							for (var r = [], o = 0; o < arguments.length; o++) r[o] =
								arguments[o];
							n.off(e, i), t.apply(n, r)
						};
					return this.on(e, i), this
				}, e
			}();
			t.default = i
		}, function(e, t, n) {
			/*! useragent-util - ver 1.1.3 created:2022/3/3 下午5:14:09 */
			e.exports = (() => {
				var e = {
						622: (e, t, n) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.BrowserUtil = t.BrowserType = void 0;
							var i, r = n(101);
							! function(e) {
								e.IE = "IE", e.Chrome = "Chrome", e.Safari =
									"Safari", e.Firefox = "Firefox", e.Opera =
									"Opera", e.Edge = "Edge", e.MicroMessenger =
									"MicroMessenger", e.X5Core = "X5Core", e.Quark =
									"Quark", e.QQ = "QQ", e.QQBrowser = "QQBrowser",
									e.DingTalk = "DingTalk", e.Electron =
									"Electron", e.Sogou = "Sogou", e.Vivo =
									"VivoBrowser", e.Oppo = "OppoBrowser", e.UC =
									"UCBrowser", e.MI = "MiBrowser", e.Lenovo =
									"SLBrowser", e.Maxthon = "Maxthon", e.Liebao =
									"Liebao", e.Huawei = "Huawei", e.Meizu =
									"MZBrowser", e.Finger = "FingerBrowser", e
									.Unknown = "unknown"
							}(i = t.BrowserType || (t.BrowserType = {}));
							var o = function() {
								function e() {}
								return Object.defineProperty(e, "isBrowser", {
										get: function() {
											return "undefined" !=
												typeof document
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "domain", {
										get: function() {
											return window.location
												.protocol + window
												.location.host
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isHttps", {
										get: function() {
											return this.isBrowser &&
												document.location && (
													"https:" == document
													.location
													.protocol || 0 ===
													document.location
													.host.indexOf(
														"127.0.0.1:") ||
													0 === document
													.location.host
													.indexOf(
														"localhost:"))
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
										"isSupportScreenShare", {
											get: function() {
												return !!(navigator &&
													navigator
													.mediaDevices &&
													navigator
													.mediaDevices
													.getDisplayMedia)
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
									"isChrome", {
										get: function() {
											return e._getBrowserInfo(),
												i.Chrome === e
												._browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isSafari", {
										get: function() {
											return e._getBrowserInfo(),
												i.Safari === e
												._browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isIE", {
										get: function() {
											return e._getBrowserInfo(),
												i.IE === e._browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isFirefox", {
										get: function() {
											return e._getBrowserInfo(),
												i.Firefox === e
												._browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isEdge", {
										get: function() {
											return e._getBrowserInfo(),
												i.Edge === e.browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isSogou", {
										get: function() {
											return e._getBrowserInfo(),
												i.Sogou === e
												.browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
										"isVivoBroswer", {
											get: function() {
												return e._getBrowserInfo(),
													i.Vivo === e.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isOppoBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Oppo === e.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isMiBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.MI === e.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isLenovoBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Lenovo === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isMaxthonBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Maxthon === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isLiebaoBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Liebao === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isHuaweiBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Huawei === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isMZBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													i.Meizu === e
													._browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
									"isOpera", {
										get: function() {
											return e._getBrowserInfo(),
												i.Opera === e
												._browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
										"isMicroMessenger", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserName === i
													.MicroMessenger
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e, "isQQ", {
										get: function() {
											return e._getBrowserInfo(),
												i.QQ === e.browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
									"isQQBrowser", {
										get: function() {
											return e._getBrowserInfo(),
												i.QQBrowser === e
												.browserName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isX5Core", {
										get: function() {
											return e._getBrowserInfo(),
												e._browserName === i
												.X5Core
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
									"isUCBrowser", {
										get: function() {
											return e._getBrowserInfo(),
												e._browserName === i.UC
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
										"isQuarkBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserName === i
													.Quark
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isFingerBrowser", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserName === i
													.Finger
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isChromeCore", {
											get: function() {
												return e._getBrowserInfo(),
													"Chrome" === e._core
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isDingTalk", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserName === i
													.DingTalk
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isUnknown", {
											get: function() {
												return e._getBrowserInfo(),
													i.Unknown === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"browserName", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"browserVersion", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserVersion
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"browserMainVersion", {
											get: function() {
												return e._getBrowserInfo(),
													e._browserVersion ?
													parseInt(e
														._browserVersion
														.split(".")[0], 10
														) : 0
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"browserCoreVersion", {
											get: function() {
												return navigator.userAgent
													.toLowerCase(), r
													.SystemUtil.isIos || r
													.SystemUtil.isMacOS, e
													.browserMainVersion
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"isElectron", {
											get: function() {
												return e._getBrowserInfo(),
													i.Electron === e
													.browserName
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
										"userAgent", {
											get: function() {
												var e = navigator.userAgent
													.toLowerCase(),
													t = e.indexOf("gecko");
												if (t > -1) {
													t = e.indexOf(" ", t);
													var n = (e = e
														.substring(t +
															1, e.length)
														).split(" ");
													e = "";
													for (var i = 0; i < n
														.length; ++i) {
														var r = n[i].split(
															"/");
														r && r.length && (
															e += r[0] +
															" ")
													}
												}
												return e
											},
											enumerable: !1,
											configurable: !0
										}), e.compareVersion = function(t) {
										if (e._getBrowserInfo(), e
											._browserVersion) {
											for (var n = e._browserVersion
													.split("."), i = t.split(
														"."), r = 0, o = 0, a =
													0; a < n.length && a < i
												.length; ++a) {
												if ((r = isNaN(parseInt(n[a],
														10)) ? 0 : parseInt(
														n[a], 10)) < (o = isNaN(
															parseInt(i[a], 10)
															) ? 0 : parseInt(i[
															a], 10))) return !1;
												if (r > o) return !0
											}
											return !0
										}
										return !0
									}, e._getBrowserInfo = function() {
										if (!e._browserName || !e
											._browserVersion)
											if (navigator && navigator
												.userAgent) {
												var t = navigator.userAgent
													.toLowerCase(),
													n = void 0;
												(n = t.match(
													/edg[e|a]?\/([\d.]+)/)) || (
													n = t.match(
														/edgios\/([\d.]+)/)) ? e
													._updateBrowserInfo(i.Edge,
														t, n[1]): (n = t.match(
														/rv:([\d.]+)\) like gecko/
														)) || (n = t.match(
														/msie ([\d.]+)/)) ? e
													._updateBrowserInfo(i.IE, t,
														n[1]) : (n = t.match(
														/vivobrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.Vivo,
														t, n[1]) : (n = t.match(
														/miuibrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.MI, t,
														n[1]) : (n = t.match(
														/heytapbrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.Oppo,
														t, n[1]) : (n = t.match(
														/mzbrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.Meizu,
														t, n[1]) : (n = t.match(
														/ucbrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.UC, t,
														n[1]) : (n = t.match(
														/quark\/([\d.]+)/)) ? e
													._updateBrowserInfo(i.Quark,
														t, n[1]) : (n = t.match(
														/slbrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i
														.Lenovo, t, n[1]) : (n =
														t.match(
															/lbbrowser\/([\d.]+)/
															)) ? e
													._updateBrowserInfo(i
														.Liebao, t, n[1]) : (n =
														t.match(
															/fingerbrowser\/([\d.]+)/
															)) ? e
													._updateBrowserInfo(i
														.Finger, t, n[1]) : (n =
														t.match(
															/huaweibrowser\/([\d.]+)/
															)) ? e
													._updateBrowserInfo(i
														.Huawei, t, n[1]) : (n =
														t.match(
															/maxthon\/([\d.]+)/)
														) ? e
													._updateBrowserInfo(i
														.Maxthon, t, n[1]) : (
														n = t.match(
															/firefox\/([\d.]+)/)
														) ? e
													._updateBrowserInfo(i
														.Firefox, t, n[1]) : (
														n = t.match(
															/electron\/([\d.]+)/
															)) ? e
													._updateBrowserInfo(i
														.Electron, t, n[1]) : (
														n = t.match(
															/chrome\/([\d.]+)/)
														) && this._isChrome(
													t) || (n = t.match(
														/crios\/([\d.]+)/)) &&
													this._isChrome(t) ? e
													._updateBrowserInfo(i
														.Chrome, t, n[1]) : (n =
														t.match(
															/metasr\s([\d.]+)/)
														) || (n = t.match(
														/sogoumobilebrowser\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i.Sogou,
														t, n[1]) : (n = t.match(
														/opr.([\d.]+)/)) ? e
													._updateBrowserInfo(i.Opera,
														t, n[1]) : (n = t.match(
														/micromessenger.([\d.]+)/
														)) ? e
													._updateBrowserInfo(i
														.MicroMessenger, t, n[1]
														) : (n = t.match(
														/qq\/([\d.]+)/)) ? e
													._updateBrowserInfo(i.QQ, t,
														n[1]) : (n = t.match(
														/m?qqbrowser\/([\d.]+)/
														)) || (n = t.match(
														/qqbrowserlite\/([\d.]+)/
														)) ? e
													._updateBrowserInfo(i
														.QQBrowser, t, n[1]) : (
														n = t.match(
															/dingtalk.([\d.]+)/)
														) ? e
													._updateBrowserInfo(i
														.DingTalk, t, n[1]) : (
														n = t.match(
															/tbs\/([\d.]+)/)) ?
													e._updateBrowserInfo(i
														.X5Core, t, n[1]) : (n =
														t.match(
															/version\/([\d.]+).*safari/
															)) && this
													._isSafari(t) && e
													._updateBrowserInfo(i
														.Safari, t, n[1])
											} else e._browserName = i.Unknown, e
												._browserVersion = "0.0"
									}, e._isChrome = function(t) {
										var n = t.split(/\(|\)/);
										if (e._core = "Chrome", 5 === n
											.length) {
											var i = n[4].trim().split(" ");
											if (2 === i.length) {
												if (i[0].indexOf("chrome") > -
													1 && i[1].indexOf(
													"safari") > -1) return !0
											} else if (3 === i.length) {
												if (i[1].indexOf("mobile") > -
													1 && i[2].indexOf(
													"safari") > -1 && (i[0]
														.indexOf("chrome") > -
														1 || i[0].indexOf(
															"crios") > -1))
													return !0
											} else if (t.indexOf("qianniu") > -
												1) return !0
										} else if (t.indexOf("dingtalk") > -1)
											return !0;
										return !1
									}, e._isSafari = function(e) {
										var t = e.split(/\(|\)/);
										if (5 === t.length) {
											var n = t[4].trim().split(" ");
											if (2 === n.length) {
												if (n[0].indexOf("version") > -
													1 && n[1].indexOf(
													"safari") > -1) return !0
											} else if (3 === n.length && n[0]
												.indexOf("version") > -1 && n[1]
												.indexOf("mobile") > -1 && n[2]
												.indexOf("safari") > -1)
											return !0
										}
										return !1
									}, e._updateBrowserInfo = function(t, n,
									o) {
										e._browserName = t;
										var a = null;
										switch (t) {
											case i.QQBrowser:
												r.SystemUtil.isIos || r
													.SystemUtil.isMacOS ? (a = n
														.match(
															/version\/([\d.]+).*safari/
															), e
														._browserVersion = a ?
														a[1] : "0.0") : (a = n
														.match(
															/chrome\/([\d.]+)/),
														e._browserVersion = a ?
														a[1] : "0.0");
												break;
											case i.Vivo:
											case i.Oppo:
											case i.Meizu:
											case i.Huawei:
											case i.Sogou:
												a = n.match(/chrome\/([\d.]+)/),
													e._browserVersion = a ? a[
													1] : "0.0";
												break;
											default:
												e._browserVersion = o
										}
									}, e._browserName = i.Unknown, e
									._browserVersion = "", e._core = "", e
							}();
							t.BrowserUtil = o
						},
						864: (e, t) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.Guid = void 0;
							var n = function() {
								function e() {}
								return e.create = function(e, t) {
									void 0 === t && (t = 16);
									var n, i, r =
										"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
										.split(""),
										o = [];
									if (t = t || r.length, e)
										for (n = 0; n < e; n++) o[n] = r[0 |
											Math.random() * t];
									else
										for (o[8] = o[13] = o[18] = o[23] =
											"-", o[14] = "4", n = 0; n <
											36; n++) o[n] || (i = 0 | 16 *
											Math.random(), o[n] = r[
												19 == n ? 3 & i | 8 : i]
											);
									return o.join("")
								}, e
							}();
							t.Guid = n
						},
						442: (e, t, n) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.LocalStorage = void 0;
							var i = n(864),
								r = function() {
									function e() {}
									return Object.defineProperty(e, "uuid", {
										get: function() {
											var t = "alirtc_uuid",
												n = e.get(t);
											return n || (n = i.Guid
												.create(32), e.set(
													t, n)), n
										},
										enumerable: !1,
										configurable: !0
									}), e.get = function(e) {
										var t = "";
										return window && window.localStorage &&
											(t = window.localStorage.getItem(
												e) || ""), t
									}, e.set = function(e, t) {
										e && window && window.localStorage &&
											window.localStorage.setItem(e, t)
									}, e
								}();
							t.LocalStorage = r
						},
						72: (e, t) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.ApiRequest = void 0;
							var n = function() {
								function e() {}
								return e.postBody = function(t, n, i) {
									t = e._getUrl(t, n);
									var r, o = {};
									return o.headers || (o.headers = {}), o
										.headers.Accept =
										"application/json", o.headers[
											"Content-Type"] =
										"application/json", new Promise((
											function(n, o) {
												e.requestBody("POST", t,
													i).then((
													function(
													e) {
														return r =
															e, e
															.ok ?
															e
															.json() :
															e
															.text()
													})).then((
													function(
													t) {
														r.ok ? t
															.code ?
															(t = e
																._intercept(
																	t
																	),
																o(
																	t)
																) :
															n(t
																.data) :
															o(e._httpErrorMessage(
																r,
																t
																))
													})).catch((
													function(
													t) {
														t = e
															._httpErrorMessage(
																t
																),
															o(t)
													}))
											}))
								}, e.get = function(t, n, i) {
									var r;
									return void 0 === i && (i = {}), t = e
										._getUrl(t, n), i.headers || (i
											.headers = {}), i.headers[
											"Content-Type"] =
										"application/json", new Promise((
											function(n, o) {
												e.request("GET", t, i)
													.then((function(e) {
														return r =
															e, e
															.ok ?
															e
															.json() :
															e
															.text()
													})).then((function(
														t) {
														r.ok ? t
															.code ?
															(t = e
																._intercept(
																	t
																	),
																o(
																	t)
																) :
															n(t
																.data) :
															o(e._httpErrorMessage(
																r,
																t
																))
													})).catch((function(
														t) {
														t = e
															._httpErrorMessage(
																t
																),
															o(t)
													}))
											}))
								}, e.post = function(t, n, i, r) {
									var o;
									return void 0 === r && (r = {}), t = e
										._getUrl(t, n), r.headers || (r
											.headers = {}), r.body = i, r
										.headers.Accept =
										"application/json", r.headers[
											"Content-Type"] =
										"application/json", new Promise((
											function(n, i) {
												e.request("POST", t, r)
													.then((function(e) {
														return o =
															e, e
															.ok ?
															e
															.json() :
															e
															.text()
													})).then((function(
														t) {
														o.ok ? t
															.code ?
															(t = e
																._intercept(
																	t
																	),
																i(
																	t)
																) :
															n(t
																.data) :
															i(e._httpErrorMessage(
																o,
																t
																))
													})).catch((function(
														t) {
														t = e
															._httpErrorMessage(
																t
																),
															i(t)
													}))
											}))
								}, e.request = function(e, t, n) {
									void 0 === e && (e = "GET");
									var i = new Headers(n.headers),
										r = new Request(t, {
											method: e,
											headers: i
										});
									return fetch(r)
								}, e.requestBody = function(e, t, n) {
									return void 0 === e && (e = "GET"),
										fetch(t, {
											method: e,
											body: n,
											headers: new Headers({
												"Content-Type": "application/json"
											})
										})
								}, e.ajaxPost = function(t, n, i, r) {
									return void 0 === r && (r = {}), t = e
										._getUrl(t, n), r.headers || (r
											.headers = {}), r.headers
										.Accept = "application/json", r
										.headers["Content-Type"] =
										"application/json", e.ajax("POST",
											t, i, r)
								}, e.ajax = function(t, n, i, r) {
									void 0 === t && (t = "GET"), void 0 ===
										r && (r = {});
									var o = new XMLHttpRequest;
									return new Promise((function(a, s) {
										o.onreadystatechange =
											function() {
												if (4 === o
													.readyState)
													if (200 ===
														o.status
														) {
														var t =
															JSON
															.parse(
																o
																.responseText
																);
														t.code ?
															(t = e
																._intercept(
																	t
																	),
																s(
																	t)
																) :
															a(t)
													} else s({
														message: o
															.responseText ||
															"请求失败:" +
															n
													})
											}, o.open(t, n, !0);
										try {
											if (r
												.withCredentials &&
												(o.withCredentials = !
													0), r
												.headers)
												for (var c in r
														.headers)
													o
													.setRequestHeader(
														c, r
														.headers[
															c])
										} catch (e) {
											return void s(e)
										}
										try {
											o.send(i)
										} catch (e) {
											s(e)
										}
									}))
								}, e._getUrl = function(e, t) {
									var n = [];
									if (t)
										for (var i in t) n.push(i + "=" + t[
											i]);
									var r = n.join("&");
									return (-1 != e.indexOf("?") ? e : e +
										"?") + r
								}, e._httpErrorMessage = function(e, t) {
									return e.message || (e.message =
										"HTTP " + e.status + "(" + e
										.statusText + ") : " + t), e
								}, e._intercept = function(e) {
									var t = e.data;
									return e.code && ((t = t || {}).data = e
										.data, t.code = e.code, t
										.description = e.description, t
										.message = "0x" + Number(e.code)
										.toString(16) + ", " + e
										.description, t.tid && (t
											.message += ", tid=" + t.tid
											)), t
								}, e
							}();
							t.ApiRequest = n
						},
						101: (e, t) => {
							var n, i;
							Object.defineProperty(t, "__esModule", {
									value: !0
								}), t.SystemUtil = t.WindowsType = t.SystemType =
								void 0,
								function(e) {
									e.Unknown = "Unknown", e.MacOS = "Mac", e
										.Windows = "Windows", e.Android = "Android",
										e.Iphone = "iphone", e.Ipad = "ipad", e
										.iOS = "iOS", e.Linux = "Linux", e
										.ChromeOS = "ChromeOS"
								}(n = t.SystemType || (t.SystemType = {})),
								function(e) {
									e.Windows10 = "Windows 10", e.Windows7 =
										"Windows 7", e.WindowsVista =
										"Windows vista", e.WindowsXP = "Windows xp"
								}(i = t.WindowsType || (t.WindowsType = {}));
							var r = function() {
								function e() {}
								return Object.defineProperty(e, "isMacOS", {
										get: function() {
											return n.MacOS === e
												.systemName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isWindows", {
										get: function() {
											return e.systemName.indexOf(
												n.Windows) > -1
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isIos", {
										get: function() {
											return n.Iphone === e
												.systemName || n
												.Ipad === e.systemName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isAndroid", {
										get: function() {
											return n.Android === e
												.systemName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isLinux", {
										get: function() {
											return n.Linux === e
												.systemName || n
												.Linux === e._platform
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "systemName", {
										get: function() {
											return e._getSystemInfo(), e
												._systemName
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e,
										"systemVersion", {
											get: function() {
												return e._getSystemInfo(), e
													._systemVersion
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e,
									"platform", {
										get: function() {
											return e._getSystemInfo(), e
												._platform
										},
										enumerable: !1,
										configurable: !0
									}), Object.defineProperty(e, "isUnknown", {
										get: function() {
											return !e.platform || e
												.platform === n.Unknown
										},
										enumerable: !1,
										configurable: !0
									}), e.compareVersion = function(t) {
										if (e._getSystemInfo(), e
											._systemVersion) {
											for (var n = e._systemVersion.split(
														"."), i = t.split("."),
													r = 0, o = 0, a = 0; a < n
												.length && a < i.length; ++a) {
												if ((r = isNaN(parseInt(n[a],
														10)) ? 0 : parseInt(
														n[a], 10)) < (o = isNaN(
															parseInt(i[a], 10)
															) ? 0 : parseInt(i[
															a], 10))) return !1;
												if (r > o) return !0
											}
											return !0
										}
										return !0
									}, e._getSystemInfo = function() {
										if (!e._systemName || !e
											._systemVersion || !e._platform)
											if (navigator && navigator
												.userAgent) {
												var t = navigator.userAgent
													.toLowerCase();
												t.indexOf("ipad") > -1 ? (e
														._systemName = n.Ipad, e
														._platform = n.iOS, e
														._systemVersion = e
														._getIosSystemVersion(t)
														) : t.indexOf(
													"iphone") > -1 ? (e
														._systemName = n.Iphone,
														e._platform = n.iOS, e
														._systemVersion = e
														._getIosSystemVersion(t)
														) : t.indexOf(
													"android") > -1 ? (e
														._platform = n.Android,
														e._systemName = n
														.Android, e
														._systemVersion = e
														._getAndroidSystemVersion(
															t)) : t.indexOf(
														"win") > -1 ? t.indexOf(
														"windwos nt 10") > -1 ||
													t.indexOf("windows 10") ? (e
														._systemName = i
														.Windows10, e
														._platform = n.Windows,
														e._systemVersion = "10"
														) : t.indexOf(
														"windows nt 6.1") > -
													1 || t.indexOf(
													"windows 7") > -1 ? (e
														._systemName = i
														.Windows7, e._platform =
														n.Windows, e
														._systemVersion = "7") :
													t.indexOf(
													"windows nt 6.0") > -1 || t
													.indexOf("windows vista") >
													-1 ? (e._systemName = i
														.WindowsVista, e
														._platform = n.Windows,
														e._systemVersion =
														"vista") : t.indexOf(
														"widows nt 5.1") > -1 ||
													t.indexOf("windows xp") > -
													1 ? (e._systemName = i
														.WindowsXP, e
														._platform = n.Windows,
														e._systemVersion = "xp"
														) : (e._platform = n
														.Windows, e
														._systemName = n
														.Windows, e
														._systemVersion = "0.0"
														) : t.indexOf("mac") > -
													1 ? navigator && navigator
													.maxTouchPoints && navigator
													.maxTouchPoints > 0 ? (e
														._systemName = n.Ipad, e
														._platform = n.iOS, e
														._systemVersion = e
														._getIosSystemVersion(t)
														) : (e._platform = n
														.MacOS, e._systemName =
														n.MacOS, e
														._systemVersion = e
														._getMacSystemVersion(t)
														) : t.indexOf("linux") >
													-1 ? (e._platform = n.Linux,
														e._systemName = n.Linux,
														e._systemVersion = "0.0"
														) : t.indexOf("cros") >
													-1 ? (e._platform = n.Linux,
														e._systemName = n
														.ChromeOS, e
														._systemVersion = "0.0"
														) : (e._systemName = n
														.Unknown, e._platform =
														n.Windows, e
														._systemVersion = "0.0")
											} else e._systemName = n.Unknown, e
												._platform = n.Unknown, e
												._systemVersion = "0.0"
									}, e._getIosSystemVersion = function(e) {
										return (e.match(/OS [\d._]*/gi) + "")
											.replace(/[^0-9|_.]/gi, "").replace(
												/_/gi, ".")
									}, e._getMacSystemVersion = function(e) {
										return (e.match(/OS X [\d._]*/gi) + "")
											.replace(/[^0-9|_.]/gi, "").replace(
												/_/gi, ".")
									}, e._getAndroidSystemVersion = function(
									e) {
										return e.substr(e.indexOf("android") +
											8, e.indexOf(";", e.indexOf(
												"android")) - e.indexOf(
												"android") - 8)
									}, e._systemName = "", e._systemVersion =
									"", e._platform = n.Unknown, e
							}();
							t.SystemUtil = r
						}
					},
					t = {};

				function n(i) {
					if (t[i]) return t[i].exports;
					var r = t[i] = {
						exports: {}
					};
					return e[i](r, r.exports, n), r.exports
				}
				var i = {};
				return (() => {
					var e = i;
					Object.defineProperty(e, "__esModule", {
							value: !0
						}), e.ApiRequest = e.LocalStorage = e.Guid = e
						.BrowserUtil = e.SystemUtil = void 0;
					var t = n(101);
					Object.defineProperty(e, "SystemUtil", {
						enumerable: !0,
						get: function() {
							return t.SystemUtil
						}
					});
					var r = n(622);
					Object.defineProperty(e, "BrowserUtil", {
						enumerable: !0,
						get: function() {
							return r.BrowserUtil
						}
					});
					var o = n(864);
					Object.defineProperty(e, "Guid", {
						enumerable: !0,
						get: function() {
							return o.Guid
						}
					});
					var a = n(442);
					Object.defineProperty(e, "LocalStorage", {
						enumerable: !0,
						get: function() {
							return a.LocalStorage
						}
					});
					var s = n(72);
					Object.defineProperty(e, "ApiRequest", {
						enumerable: !0,
						get: function() {
							return s.ApiRequest
						}
					}), window && (window.SystemUtil = t.SystemUtil, window
						.BrowserUtil = r.BrowserUtil, window.Guid = o.Guid,
						window.LocalStorage = a.LocalStorage, window
						.ApiRequest = s.ApiRequest)
				})(), i
			})()
		}, function(e, t, n) {
			var i = {
				generateIdentifier: function() {
					return Math.random().toString(36).substr(2, 10)
				}
			};
			i.localCName = i.generateIdentifier(), i.splitLines = function(e) {
				return e.trim().split("\n").map((function(e) {
					return e.trim()
				}))
			}, i.splitSections = function(e) {
				return e.split("\nm=").map((function(e, t) {
					return (t > 0 ? "m=" + e : e).trim() + "\r\n"
				}))
			}, i.getDescription = function(e) {
				var t = i.splitSections(e);
				return t && t[0]
			}, i.getMediaSections = function(e) {
				var t = i.splitSections(e);
				return t.shift(), t
			}, i.matchPrefix = function(e, t) {
				return i.splitLines(e).filter((function(e) {
					return 0 === e.indexOf(t)
				}))
			}, i.parseCandidate = function(e) {
				for (var t, n = {
						foundation: (t = 0 === e.indexOf("a=candidate:") ? e.substring(
							12).split(" ") : e.substring(10).split(" "))[0],
						component: parseInt(t[1], 10),
						protocol: t[2].toLowerCase(),
						priority: parseInt(t[3], 10),
						ip: t[4],
						address: t[4],
						port: parseInt(t[5], 10),
						type: t[7]
					}, i = 8; i < t.length; i += 2) switch (t[i]) {
					case "raddr":
						n.relatedAddress = t[i + 1];
						break;
					case "rport":
						n.relatedPort = parseInt(t[i + 1], 10);
						break;
					case "tcptype":
						n.tcpType = t[i + 1];
						break;
					case "ufrag":
						n.ufrag = t[i + 1], n.usernameFragment = t[i + 1];
						break;
					default:
						n[t[i]] = t[i + 1]
				}
				return n
			}, i.writeCandidate = function(e) {
				var t = [];
				t.push(e.foundation), t.push(e.component), t.push(e.protocol.toUpperCase()),
					t.push(e.priority), t.push(e.address || e.ip), t.push(e.port);
				var n = e.type;
				return t.push("typ"), t.push(n), "host" !== n && e.relatedAddress && e
					.relatedPort && (t.push("raddr"), t.push(e.relatedAddress), t.push(
						"rport"), t.push(e.relatedPort)), e.tcpType && "tcp" === e.protocol
					.toLowerCase() && (t.push("tcptype"), t.push(e.tcpType)), (e
						.usernameFragment || e.ufrag) && (t.push("ufrag"), t.push(e
						.usernameFragment || e.ufrag)), "candidate:" + t.join(" ")
			}, i.parseIceOptions = function(e) {
				return e.substr(14).split(" ")
			}, i.parseRtpMap = function(e) {
				var t = e.substr(9).split(" "),
					n = {
						payloadType: parseInt(t.shift(), 10)
					};
				return t = t[0].split("/"), n.name = t[0], n.clockRate = parseInt(t[1], 10),
					n.channels = 3 === t.length ? parseInt(t[2], 10) : 1, n.numChannels = n
					.channels, n
			}, i.writeRtpMap = function(e) {
				var t = e.payloadType;
				void 0 !== e.preferredPayloadType && (t = e.preferredPayloadType);
				var n = e.channels || e.numChannels || 1;
				return "a=rtpmap:" + t + " " + e.name + "/" + e.clockRate + (1 !== n ? "/" +
					n : "") + "\r\n"
			}, i.parseExtmap = function(e) {
				var t = e.substr(9).split(" ");
				return {
					id: parseInt(t[0], 10),
					direction: t[0].indexOf("/") > 0 ? t[0].split("/")[1] : "sendrecv",
					uri: t[1]
				}
			}, i.writeExtmap = function(e) {
				return "a=extmap:" + (e.id || e.preferredId) + (e.direction &&
						"sendrecv" !== e.direction ? "/" + e.direction : "") + " " + e.uri +
					"\r\n"
			}, i.parseFmtp = function(e) {
				for (var t, n = {}, i = e.substr(e.indexOf(" ") + 1).split(";"), r = 0; r <
					i.length; r++) n[(t = i[r].trim().split("="))[0].trim()] = t[1];
				return n
			}, i.writeFmtp = function(e) {
				var t = "",
					n = e.payloadType;
				if (void 0 !== e.preferredPayloadType && (n = e.preferredPayloadType), e
					.parameters && Object.keys(e.parameters).length) {
					var i = [];
					Object.keys(e.parameters).forEach((function(t) {
						e.parameters[t] ? i.push(t + "=" + e.parameters[t]) : i
							.push(t)
					})), t += "a=fmtp:" + n + " " + i.join(";") + "\r\n"
				}
				return t
			}, i.parseRtcpFb = function(e) {
				var t = e.substr(e.indexOf(" ") + 1).split(" ");
				return {
					type: t.shift(),
					parameter: t.join(" ")
				}
			}, i.writeRtcpFb = function(e) {
				var t = "",
					n = e.payloadType;
				return void 0 !== e.preferredPayloadType && (n = e.preferredPayloadType), e
					.rtcpFeedback && e.rtcpFeedback.length && e.rtcpFeedback.forEach((
						function(e) {
							t += "a=rtcp-fb:" + n + " " + e.type + (e.parameter && e
								.parameter.length ? " " + e.parameter : "") + "\r\n"
						})), t
			}, i.parseSsrcMedia = function(e) {
				var t = e.indexOf(" "),
					n = {
						ssrc: parseInt(e.substr(7, t - 7), 10)
					},
					i = e.indexOf(":", t);
				return i > -1 ? (n.attribute = e.substr(t + 1, i - t - 1), n.value = e
					.substr(i + 1)) : n.attribute = e.substr(t + 1), n
			}, i.parseSsrcGroup = function(e) {
				var t = e.substr(13).split(" ");
				return {
					semantics: t.shift(),
					ssrcs: t.map((function(e) {
						return parseInt(e, 10)
					}))
				}
			}, i.getMid = function(e) {
				var t = i.matchPrefix(e, "a=mid:")[0];
				if (t) return t.substr(6)
			}, i.parseFingerprint = function(e) {
				var t = e.substr(14).split(" ");
				return {
					algorithm: t[0].toLowerCase(),
					value: t[1]
				}
			}, i.getDtlsParameters = function(e, t) {
				return {
					role: "auto",
					fingerprints: i.matchPrefix(e + t, "a=fingerprint:").map(i
						.parseFingerprint)
				}
			}, i.writeDtlsParameters = function(e, t) {
				var n = "a=setup:" + t + "\r\n";
				return e.fingerprints.forEach((function(e) {
					n += "a=fingerprint:" + e.algorithm + " " + e.value + "\r\n"
				})), n
			}, i.parseCryptoLine = function(e) {
				var t = e.substr(9).split(" ");
				return {
					tag: parseInt(t[0], 10),
					cryptoSuite: t[1],
					keyParams: t[2],
					sessionParams: t.slice(3)
				}
			}, i.writeCryptoLine = function(e) {
				return "a=crypto:" + e.tag + " " + e.cryptoSuite + " " + ("object" ==
					typeof e.keyParams ? i.writeCryptoKeyParams(e.keyParams) : e
					.keyParams) + (e.sessionParams ? " " + e.sessionParams.join(" ") :
					"") + "\r\n"
			}, i.parseCryptoKeyParams = function(e) {
				if (0 !== e.indexOf("inline:")) return null;
				var t = e.substr(7).split("|");
				return {
					keyMethod: "inline",
					keySalt: t[0],
					lifeTime: t[1],
					mkiValue: t[2] ? t[2].split(":")[0] : void 0,
					mkiLength: t[2] ? t[2].split(":")[1] : void 0
				}
			}, i.writeCryptoKeyParams = function(e) {
				return e.keyMethod + ":" + e.keySalt + (e.lifeTime ? "|" + e.lifeTime :
					"") + (e.mkiValue && e.mkiLength ? "|" + e.mkiValue + ":" + e
						.mkiLength : "")
			}, i.getCryptoParameters = function(e, t) {
				return i.matchPrefix(e + t, "a=crypto:").map(i.parseCryptoLine)
			}, i.getIceParameters = function(e, t) {
				var n = i.matchPrefix(e + t, "a=ice-ufrag:")[0],
					r = i.matchPrefix(e + t, "a=ice-pwd:")[0];
				return n && r ? {
					usernameFragment: n.substr(12),
					password: r.substr(10)
				} : null
			}, i.writeIceParameters = function(e) {
				return "a=ice-ufrag:" + e.usernameFragment + "\r\na=ice-pwd:" + e.password +
					"\r\n"
			}, i.parseRtpParameters = function(e) {
				for (var t = {
						codecs: [],
						headerExtensions: [],
						fecMechanisms: [],
						rtcp: []
					}, n = i.splitLines(e)[0].split(" "), r = 3; r < n.length; r++) {
					var o = n[r],
						a = i.matchPrefix(e, "a=rtpmap:" + o + " ")[0];
					if (a) {
						var s = i.parseRtpMap(a),
							c = i.matchPrefix(e, "a=fmtp:" + o + " ");
						switch (s.parameters = c.length ? i.parseFmtp(c[0]) : {}, s
							.rtcpFeedback = i.matchPrefix(e, "a=rtcp-fb:" + o + " ").map(i
								.parseRtcpFb), t.codecs.push(s), s.name.toUpperCase()) {
							case "RED":
							case "ULPFEC":
								t.fecMechanisms.push(s.name.toUpperCase())
						}
					}
				}
				return i.matchPrefix(e, "a=extmap:").forEach((function(e) {
					t.headerExtensions.push(i.parseExtmap(e))
				})), t
			}, i.writeRtpDescription = function(e, t) {
				var n = "";
				n += "m=" + e + " ", n += t.codecs.length > 0 ? "9" : "0", n +=
					" UDP/TLS/RTP/SAVPF ", n += t.codecs.map((function(e) {
						return void 0 !== e.preferredPayloadType ? e
							.preferredPayloadType : e.payloadType
					})).join(" ") + "\r\n", n += "c=IN IP4 0.0.0.0\r\n", n +=
					"a=rtcp:9 IN IP4 0.0.0.0\r\n", t.codecs.forEach((function(e) {
						n += i.writeRtpMap(e), n += i.writeFmtp(e), n += i
							.writeRtcpFb(e)
					}));
				var r = 0;
				return t.codecs.forEach((function(e) {
						e.maxptime > r && (r = e.maxptime)
					})), r > 0 && (n += "a=maxptime:" + r + "\r\n"), n += "a=rtcp-mux\r\n",
					t.headerExtensions && t.headerExtensions.forEach((function(e) {
						n += i.writeExtmap(e)
					})), n
			}, i.parseRtpEncodingParameters = function(e) {
				var t, n = [],
					r = i.parseRtpParameters(e),
					o = -1 !== r.fecMechanisms.indexOf("RED"),
					a = -1 !== r.fecMechanisms.indexOf("ULPFEC"),
					s = i.matchPrefix(e, "a=ssrc:").map((function(e) {
						return i.parseSsrcMedia(e)
					})).filter((function(e) {
						return "cname" === e.attribute
					})),
					c = s.length > 0 && s[0].ssrc,
					u = i.matchPrefix(e, "a=ssrc-group:FID").map((function(e) {
						return e.substr(17).split(" ").map((function(e) {
							return parseInt(e, 10)
						}))
					}));
				u.length > 0 && u[0].length > 1 && u[0][0] === c && (t = u[0][1]), r.codecs
					.forEach((function(e) {
						if ("RTX" === e.name.toUpperCase() && e.parameters.apt) {
							var i = {
								ssrc: c,
								codecPayloadType: parseInt(e.parameters.apt, 10)
							};
							c && t && (i.rtx = {
								ssrc: t
							}), n.push(i), o && ((i = JSON.parse(JSON.stringify(
								i))).fec = {
								ssrc: c,
								mechanism: a ? "red+ulpfec" : "red"
							}, n.push(i))
						}
					})), 0 === n.length && c && n.push({
						ssrc: c
					});
				var d = i.matchPrefix(e, "b=");
				return d.length && (d = 0 === d[0].indexOf("b=TIAS:") ? parseInt(d[0]
					.substr(7), 10) : 0 === d[0].indexOf("b=AS:") ? 1e3 * parseInt(
					d[0].substr(5), 10) * .95 - 16e3 : void 0, n.forEach((function(
					e) {
					e.maxBitrate = d
				}))), n
			}, i.parseRtcpParameters = function(e) {
				var t = {},
					n = i.matchPrefix(e, "a=ssrc:").map((function(e) {
						return i.parseSsrcMedia(e)
					})).filter((function(e) {
						return "cname" === e.attribute
					}))[0];
				n && (t.cname = n.value, t.ssrc = n.ssrc);
				var r = i.matchPrefix(e, "a=rtcp-rsize");
				t.reducedSize = r.length > 0, t.compound = 0 === r.length;
				var o = i.matchPrefix(e, "a=rtcp-mux");
				return t.mux = o.length > 0, t
			}, i.parseMsid = function(e) {
				var t, n = i.matchPrefix(e, "a=msid:");
				if (1 === n.length) return {
					stream: (t = n[0].substr(7).split(" "))[0],
					track: t[1]
				};
				var r = i.matchPrefix(e, "a=ssrc:").map((function(e) {
					return i.parseSsrcMedia(e)
				})).filter((function(e) {
					return "msid" === e.attribute
				}));
				return r.length > 0 ? {
					stream: (t = r[0].value.split(" "))[0],
					track: t[1]
				} : void 0
			}, i.parseSctpDescription = function(e) {
				var t, n = i.parseMLine(e),
					r = i.matchPrefix(e, "a=max-message-size:");
				r.length > 0 && (t = parseInt(r[0].substr(19), 10)), isNaN(t) && (t =
				65536);
				var o = i.matchPrefix(e, "a=sctp-port:");
				if (o.length > 0) return {
					port: parseInt(o[0].substr(12), 10),
					protocol: n.fmt,
					maxMessageSize: t
				};
				if (i.matchPrefix(e, "a=sctpmap:").length > 0) {
					var a = i.matchPrefix(e, "a=sctpmap:")[0].substr(10).split(" ");
					return {
						port: parseInt(a[0], 10),
						protocol: a[1],
						maxMessageSize: t
					}
				}
			}, i.writeSctpDescription = function(e, t) {
				var n = [];
				return n = "DTLS/SCTP" !== e.protocol ? ["m=" + e.kind + " 9 " + e
					.protocol + " " + t.protocol + "\r\n", "c=IN IP4 0.0.0.0\r\n",
					"a=sctp-port:" + t.port + "\r\n"
				] : ["m=" + e.kind + " 9 " + e.protocol + " " + t.port + "\r\n",
					"c=IN IP4 0.0.0.0\r\n", "a=sctpmap:" + t.port + " " + t.protocol +
					" 65535\r\n"
				], void 0 !== t.maxMessageSize && n.push("a=max-message-size:" + t
					.maxMessageSize + "\r\n"), n.join("")
			}, i.generateSessionId = function() {
				return Math.random().toString().substr(2, 21)
			}, i.writeSessionBoilerplate = function(e, t, n) {
				var r = void 0 !== t ? t : 2;
				return "v=0\r\no=" + (n || "thisisadapterortc") + " " + (e || i
						.generateSessionId()) + " " + r +
					" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"
			}, i.writeMediaSection = function(e, t, n, r) {
				var o = i.writeRtpDescription(e.kind, t);
				if (o += i.writeIceParameters(e.iceGatherer.getLocalParameters()), o += i
					.writeDtlsParameters(e.dtlsTransport.getLocalParameters(), "offer" ===
						n ? "actpass" : "active"), o += "a=mid:" + e.mid + "\r\n", e
					.direction ? o += "a=" + e.direction + "\r\n" : e.rtpSender && e
					.rtpReceiver ? o += "a=sendrecv\r\n" : e.rtpSender ? o +=
					"a=sendonly\r\n" : e.rtpReceiver ? o += "a=recvonly\r\n" : o +=
					"a=inactive\r\n", e.rtpSender) {
					var a = "msid:" + r.id + " " + e.rtpSender.track.id + "\r\n";
					o += "a=" + a, o += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " " +
						a, e.sendEncodingParameters[0].rtx && (o += "a=ssrc:" + e
							.sendEncodingParameters[0].rtx.ssrc + " " + a, o +=
							"a=ssrc-group:FID " + e.sendEncodingParameters[0].ssrc + " " + e
							.sendEncodingParameters[0].rtx.ssrc + "\r\n")
				}
				return o += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " cname:" + i
					.localCName + "\r\n", e.rtpSender && e.sendEncodingParameters[0].rtx &&
					(o += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " cname:" + i
						.localCName + "\r\n"), o
			}, i.getDirection = function(e, t) {
				for (var n = i.splitLines(e), r = 0; r < n.length; r++) switch (n[r]) {
					case "a=sendrecv":
					case "a=sendonly":
					case "a=recvonly":
					case "a=inactive":
						return n[r].substr(2)
				}
				return t ? i.getDirection(t) : "sendrecv"
			}, i.getKind = function(e) {
				return i.splitLines(e)[0].split(" ")[0].substr(2)
			}, i.isRejected = function(e) {
				return "0" === e.split(" ", 2)[1]
			}, i.parseMLine = function(e) {
				var t = i.splitLines(e)[0].substr(2).split(" ");
				return {
					kind: t[0],
					port: parseInt(t[1], 10),
					protocol: t[2],
					fmt: t.slice(3).join(" ")
				}
			}, i.parseOLine = function(e) {
				var t = i.matchPrefix(e, "o=")[0].substr(2).split(" ");
				return {
					username: t[0],
					sessionId: t[1],
					sessionVersion: parseInt(t[2], 10),
					netType: t[3],
					addressType: t[4],
					address: t[5]
				}
			}, i.isValidSDP = function(e) {
				if ("string" != typeof e || 0 === e.length) return !1;
				for (var t = i.splitLines(e), n = 0; n < t.length; n++)
					if (t[n].length < 2 || "=" !== t[n].charAt(1)) return !1;
				return !0
			}, e.exports = i
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
					value: !0
				}), t.DeviceErrorCode = t.ErrorCode = void 0,
				function(e) {
					e[e.ERROR_DEVICE_UNKNOWNERROR = 1e4] = "ERROR_DEVICE_UNKNOWNERROR", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTFOUND = 10001] =
						"ERROR_DEVICE_AUDIODEVICE_NOTFOUND", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTFOUND = 10002] =
						"ERROR_DEVICE_VIDEODEVICE_NOTFOUND", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTALLOWED = 10003] =
						"ERROR_DEVICE_AUDIODEVICE_NOTALLOWED", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTALLOWED = 10004] =
						"ERROR_DEVICE_VIDEODEVICE_NOTALLOWED", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTREADABLE = 10005] =
						"ERROR_DEVICE_AUDIODEVICE_NOTREADABLE", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTREADABLE = 10006] =
						"ERROR_DEVICE_VIDEODEVICE_NOTREADABLE", e[e
							.ERROR_DEIVCE_CONSTRAINEDERROR = 10007] =
						"ERROR_DEIVCE_CONSTRAINEDERROR", e[e.ERROR_SCREENSHARE_UNKNOWNERRO =
							10010] = "ERROR_SCREENSHARE_UNKNOWNERRO", e[e
							.ERROR_SCREENSHARE_NOTALLOWED = 10011] =
						"ERROR_SCREENSHARE_NOTALLOWED", e[e.ERROR_SCREENSHARE_ENDED = 10012] =
						"ERROR_SCREENSHARE_ENDED", e[e.ERROR_SCREENSHARE_NOPERMISSION = 10013] =
						"ERROR_SCREENSHARE_NOPERMISSION", e[e.ERROR_SCREENSHARE_INVALIDACCESS =
							10014] = "ERROR_SCREENSHARE_INVALIDACCESS", e[e
							.ERROR_SCREENSHARE_NOTSUPPORT = 10018] =
						"ERROR_SCREENSHARE_NOTSUPPORT", e[e.ERROR_DEVICE_NOTSUPPORT = 10019] =
						"ERROR_DEVICE_NOTSUPPORT", e[e.ERROR_SIGNAL_ERROR = 10101] =
						"ERROR_SIGNAL_ERROR", e[e.ERROR_PLAY_FAILED = 10102] =
						"ERROR_PLAY_FAILED", e[e.ERROR_NOTSUPPORT_WEBRTC = 10110] =
						"ERROR_NOTSUPPORT_WEBRTC", e[e.ERROR_BROWSER_NOTSUPPORT = 10111] =
						"ERROR_BROWSER_NOTSUPPORT", e[e.ERROR_BROWSER_VERSIONLOW = 10112] =
						"ERROR_BROWSER_VERSIONLOW", e[e.ERROR_NOTSUPPORT_H264 = 10113] =
						"ERROR_NOTSUPPORT_H264", e[e.ERROR_CREATEOFFER = 10114] =
						"ERROR_CREATEOFFER", e[e.ERROR_HEMLELEMENT_NOTMATCH = 10125] =
						"ERROR_HEMLELEMENT_NOTMATCH", e[e.ERROR_AUTOPLAY_ERROR = 10201] =
						"ERROR_AUTOPLAY_ERROR", e[e.ERROR_PLAY_URL = 10202] = "ERROR_PLAY_URL",
						e[e.ERROR_SUBSCRIBE_NOTHING = 10203] = "ERROR_SUBSCRIBE_NOTHING", e[e
							.ERROR_HTMLELEMENT_ERROR = 10204] = "ERROR_HTMLELEMENT_ERROR", e[e
							.ERROR_HTTPREQUEST_ERROR = 10205] = "ERROR_HTTPREQUEST_ERROR", e[e
							.ERROR_ANSWER_ERROR = 10206] = "ERROR_ANSWER_ERROR", e[e
							.ERROR_PUBLISH_URL = 10300] = "ERROR_PUBLISH_URL", e[e
							.ERROR_PUBLISH_NOAUDIO = 10301] = "ERROR_PUBLISH_NOAUDIO", e[e
							.ERROR_MEDIASTREAMTRACK_TYPE_ERROR = 11e3] =
						"ERROR_MEDIASTREAMTRACK_TYPE_ERROR", e[e
							.ERROR_MEDIASTREAMTRACK_KIND_ERROR = 11001] =
						"ERROR_MEDIASTREAMTRACK_KIND_ERROR", e[e
							.ERROR_MEDIASTREAMTRACK_AUDIO_NONE = 11002] =
						"ERROR_MEDIASTREAMTRACK_AUDIO_NONE", e[e.ERROR_PREERCONNECTION_UNKNOWN =
							12e3] = "ERROR_PREERCONNECTION_UNKNOWN"
				}(t.ErrorCode || (t.ErrorCode = {})),
				function(e) {
					e[e.ERROR_DEVICE_UNKNOWNERROR = 1e4] = "ERROR_DEVICE_UNKNOWNERROR", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTFOUND = 10001] =
						"ERROR_DEVICE_AUDIODEVICE_NOTFOUND", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTFOUND = 10002] =
						"ERROR_DEVICE_VIDEODEVICE_NOTFOUND", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTALLOWED = 10003] =
						"ERROR_DEVICE_AUDIODEVICE_NOTALLOWED", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTALLOWED = 10004] =
						"ERROR_DEVICE_VIDEODEVICE_NOTALLOWED", e[e
							.ERROR_DEVICE_AUDIODEVICE_NOTREADABLE = 10005] =
						"ERROR_DEVICE_AUDIODEVICE_NOTREADABLE", e[e
							.ERROR_DEVICE_VIDEODEVICE_NOTREADABLE = 10006] =
						"ERROR_DEVICE_VIDEODEVICE_NOTREADABLE", e[e
							.ERROR_SCREENSHARE_NOTSUPPORT = 10010] =
						"ERROR_SCREENSHARE_NOTSUPPORT", e[e.ERROR_SCREENSHARE_NOTALLOWED =
							10011] = "ERROR_SCREENSHARE_NOTALLOWED", e[e
							.ERROR_SCREENSHARE_ENDED = 10012] = "ERROR_SCREENSHARE_ENDED", e[e
							.ERROR_SCREENSHARE_NOPERMISSION = 10013] =
						"ERROR_SCREENSHARE_NOPERMISSION", e[e
							.ERROR_SCREENSHARE_SAFARI_INVALIDACCESS = 10014] =
						"ERROR_SCREENSHARE_SAFARI_INVALIDACCESS", e[e
							.ERROR_SCREENSHARE_UNKNOWNERRO = 10019] =
						"ERROR_SCREENSHARE_UNKNOWNERRO", e[e.ERROR_DEVICE_NOTSUPPORT = 2e4] =
						"ERROR_DEVICE_NOTSUPPORT"
				}(t.DeviceErrorCode || (t.DeviceErrorCode = {}))
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.RtsError = void 0;
			var i = function(e, t, n) {
				this.errorCode = e, this.message = t, this.traceId = n
			};
			t.RtsError = i
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.default = {
				version: "2.2.3",
				protocol_version: 2,
				sdk_version: "0.0.1"
			}
		}, function(e, t, n) {
			(function(t) {
				var i = n(0),
					r = n(40),
					o = n(15),
					a = {
						"Content-Type": "application/x-www-form-urlencoded"
					};

				function s(e, t) {
					!i.isUndefined(e) && i.isUndefined(e["Content-Type"]) && (e[
						"Content-Type"] = t)
				}
				var c, u = {
					transitional: {
						silentJSONParsing: !0,
						forcedJSONParsing: !0,
						clarifyTimeoutError: !1
					},
					adapter: (("undefined" != typeof XMLHttpRequest || void 0 !== t &&
						"[object process]" === Object.prototype.toString.call(t)
						) && (c = n(16)), c),
					transformRequest: [function(e, t) {
						return r(t, "Accept"), r(t, "Content-Type"), i
							.isFormData(e) || i.isArrayBuffer(e) || i.isBuffer(
								e) || i.isStream(e) || i.isFile(e) || i.isBlob(
								e) ? e : i.isArrayBufferView(e) ? e.buffer : i
							.isURLSearchParams(e) ? (s(t,
								"application/x-www-form-urlencoded;charset=utf-8"
								), e.toString()) : i.isObject(e) || t &&
							"application/json" === t["Content-Type"] ? (s(t,
								"application/json"), function(e, t, n) {
								if (i.isString(e)) try {
									return (t || JSON.parse)(e), i.trim(
										e)
								} catch (e) {
									if ("SyntaxError" !== e.name)
									throw e
								}
								return (n || JSON.stringify)(e)
							}(e)) : e
					}],
					transformResponse: [function(e) {
						var t = this.transitional,
							n = t && t.silentJSONParsing,
							r = t && t.forcedJSONParsing,
							a = !n && "json" === this.responseType;
						if (a || r && i.isString(e) && e.length) try {
							return JSON.parse(e)
						} catch (e) {
							if (a) {
								if ("SyntaxError" === e.name) throw o(e,
									this, "E_JSON_PARSE");
								throw e
							}
						}
						return e
					}],
					timeout: 0,
					xsrfCookieName: "XSRF-TOKEN",
					xsrfHeaderName: "X-XSRF-TOKEN",
					maxContentLength: -1,
					maxBodyLength: -1,
					validateStatus: function(e) {
						return e >= 200 && e < 300
					},
					headers: {
						common: {
							Accept: "application/json, text/plain, */*"
						}
					}
				};
				i.forEach(["delete", "get", "head"], (function(e) {
					u.headers[e] = {}
				})), i.forEach(["post", "put", "patch"], (function(e) {
					u.headers[e] = i.merge(a)
				})), e.exports = u
			}).call(this, n(39))
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.Stream = void 0;
			var a = function(e) {
				function t() {
					var t = e.call(this) || this;
					return t.traceid = "", t
				}
				return r(t, e), Object.defineProperty(t.prototype, "traceId", {
					get: function() {
						return this.traceid
					},
					set: function(e) {
						this.traceid = e
					},
					enumerable: !1,
					configurable: !0
				}), Object.defineProperty(t.prototype, "mediaElement", {
					get: function() {
						return this.element
					},
					enumerable: !1,
					configurable: !0
				}), t.prototype.setReporter = function(e) {
					this.reporter = e
				}, t.prototype.play = function(e) {}, t.prototype.stop = function() {
					this.traceid = "", this.reporter = void 0
				}, t
			}(o(n(1)).default);
			t.Stream = a
		}, function(e, t, n) {
			/*! browserdevicemanager - ver 1.1.8 created:2021/3/18 下午8:15:59 */
			e.exports = (() => {
				var e = {
						304: (e, t, n) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.BrowserDeviceManager = void 0;
							var i = n(101),
								r = n(853),
								o = n(62),
								a = n(913),
								s = n(331),
								c = n(1),
								u = n(935),
								d = function() {
									function e() {
										this.systemUtil = new i.SystemUtil, this
											.deviceManager = this
											.createDeviceManager()
									}
									return e.prototype.getCameraList = function() {
											return this.deviceManager
											.getCameraList()
										}, e.prototype.getMicList = function() {
											return this.deviceManager.getMicList()
										}, e.prototype.getAudioTrack = function(e) {
											return this.deviceManager.getAudioTrack(
												e)
										}, e.prototype.getVideoTrack = function(e) {
											return this.deviceManager.getVideoTrack(
												e)
										}, e.prototype.getScreenTrack = function(
										e) {
											return this.deviceManager
												.getScreenTrack(e)
										}, e.prototype.checkSupportScreenShare =
										function() {
											return this.deviceManager
												.checkSupportScreenShare()
										}, e.prototype.createDeviceManager =
										function() {
											return this.systemUtil.isWindows ? new u
												.WindowsDeviceManager : this
												.systemUtil.isAndroid ? new r
												.AndroidDeviceManager : this
												.systemUtil.isIos ? new a
												.IosDeviceManager : this.systemUtil
												.isMacOS ? new c.MacDeviceManager :
												this.systemUtil.isLinux ? new s
												.LinuxDeviceManager : new o
												.BaseDeviceManager
										}, e
								}();
							t.BrowserDeviceManager = d
						},
						603: (e, t) => {
							Object.defineProperty(t, "__esModule", {
									value: !0
								}), t.DeviceError = t.DeviceErrorDescription = t
								.DeviceErrorCode = void 0,
								function(e) {
									e[e.ERROR_DEVICE_UNKNOWNERROR = 1e4] =
										"ERROR_DEVICE_UNKNOWNERROR", e[e
											.ERROR_DEVICE_AUDIODEVICE_NOTFOUND =
											10001] =
										"ERROR_DEVICE_AUDIODEVICE_NOTFOUND", e[e
											.ERROR_DEVICE_VIDEODEVICE_NOTFOUND =
											10002] =
										"ERROR_DEVICE_VIDEODEVICE_NOTFOUND", e[e
											.ERROR_DEVICE_AUDIODEVICE_NOTALLOWED =
											10003] =
										"ERROR_DEVICE_AUDIODEVICE_NOTALLOWED", e[e
											.ERROR_DEVICE_VIDEODEVICE_NOTALLOWED =
											10004] =
										"ERROR_DEVICE_VIDEODEVICE_NOTALLOWED", e[e
											.ERROR_DEVICE_AUDIODEVICE_NOTREADABLE =
											10005] =
										"ERROR_DEVICE_AUDIODEVICE_NOTREADABLE", e[e
											.ERROR_DEVICE_VIDEODEVICE_NOTREADABLE =
											10006] =
										"ERROR_DEVICE_VIDEODEVICE_NOTREADABLE", e[e
											.ERROR_DEIVCE_CONSTRAINEDERROR = 10007
											] = "ERROR_DEIVCE_CONSTRAINEDERROR", e[e
											.ERROR_SCREENSHARE_UNKNOWNERRO = 10010
											] = "ERROR_SCREENSHARE_UNKNOWNERRO", e[e
											.ERROR_SCREENSHARE_NOTALLOWED = 10011] =
										"ERROR_SCREENSHARE_NOTALLOWED", e[e
											.ERROR_SCREENSHARE_ENDED = 10012] =
										"ERROR_SCREENSHARE_ENDED", e[e
											.ERROR_SCREENSHARE_NOPERMISSION = 10013
											] = "ERROR_SCREENSHARE_NOPERMISSION", e[
											e.ERROR_SCREENSHARE_INVALIDACCESS =
											10014] =
										"ERROR_SCREENSHARE_INVALIDACCESS", e[e
											.ERROR_SCREENSHARE_NOTSUPPORT = 10018] =
										"ERROR_SCREENSHARE_NOTSUPPORT", e[e
											.ERROR_DEVICE_NOTSUPPORT = 10019] =
										"ERROR_DEVICE_NOTSUPPORT"
								}(t.DeviceErrorCode || (t.DeviceErrorCode = {})),
								function(e) {
									e.ERRORMESSAGE_DEVICENOTFOUND =
										"Requested device not found", e
										.ERRORMESSAGE_DEVICENOTALLOWED =
										"Permission denied", e
										.ERRORMESSAGE_MACCHROME_DEVICENOTREADABLE =
										"Permission denied by system", e
										.ERRORMESSAGE_MACSAFARI_DEVICENOTALLOWED =
										"The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.",
										e.ERRORMESSAGE_MOBILEDEVICE_NOTALLOWED =
										"video device not allowed", e
										.ERRORMESSAGE_AUDIODEVICENOTREADABLE =
										"Could not start audio source", e
										.ERRORMESSAGE_VIDEODEVICENOTREADABLE =
										"Could not start video source", e
										.ERRORNAME_DEVICENOTFOUND = "NotFoundError",
										e.ERRORNAME_DEVICENOTALLOWED =
										"NotAllowedError", e
										.ERRORNAME_DEVICENOTREADABLE =
										"NotReadableError", e
										.ERRORNAME_DEVICEOVERCONSTRAINED =
										"OverconstrainedError", e
										.ERRORNAME_INVALID_ACCESS =
										"InvalidAccessError"
								}(t.DeviceErrorDescription || (t
									.DeviceErrorDescription = {})), t.DeviceError =
								function(e, t) {
									this.code = e, this.reason = t
								}
						},
						873: (e, t) => {
							Object.defineProperty(t, "__esModule", {
									value: !0
								}), t.FacingMode = t.DeviceType = t
								.MobileCameraType = void 0,
								function(e) {
									e[e.USER = 0] = "USER", e[e.ENV = 1] = "ENV"
								}(t.MobileCameraType || (t.MobileCameraType = {})),
								function(e) {
									e.Camera = "videoinput", e.Mic = "audioinput", e
										.Screen = "screen"
								}(t.DeviceType || (t.DeviceType = {})),
								function(e) {
									e.USER = "user", e.ENVIRONMENT = "environment"
								}(t.FacingMode || (t.FacingMode = {}))
						},
						853: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.AndroidDeviceManager = void 0;
							var o = function(e) {
								function t() {
									return e.call(this) || this
								}
								return r(t, e), t
							}(n(583).MobileDeviceManager);
							t.AndroidDeviceManager = o
						},
						62: (e, t, n) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.BaseDeviceManager = void 0;
							var i = n(603),
								r = n(873),
								o = function() {
									function e() {}
									return e.prototype.checkSupportScreenShare =
										function() {
											return !!(navigator && navigator
												.mediaDevices && navigator
												.mediaDevices.getDisplayMedia &&
												navigator.mediaDevices
												.getDisplayMedia)
										}, e.prototype.getCameraList = function() {
											var e = this;
											return new Promise((function(t, n) {
												e.checkSupport() ? e
													.getDeviceRight(r
														.DeviceType
														.Camera).then((
														function() {
															e.getDeviceList(
																	r
																	.DeviceType
																	.Camera
																	)
																.then(
																	(function(
																		e
																		) {
																		t(e)
																	})
																	)
																.catch(
																	(function(
																		t
																		) {
																		n(e.parseError(
																			r
																			.DeviceType
																			.Camera,
																			t
																			))
																	})
																	)
														})).catch((
														function(
														t) {
															n(e.parseError(
																r
																.DeviceType
																.Camera,
																t
																))
														})) : n(new i
														.DeviceError(i
															.DeviceErrorCode
															.ERROR_DEVICE_NOTSUPPORT,
															"not support navigator.mediaDevices"
															))
											}))
										}, e.prototype.getMicList = function() {
											var e = this;
											return new Promise((function(t, n) {
												e.checkSupport() ? e
													.getDeviceRight(r
														.DeviceType.Mic)
													.then((function() {
														e.getDeviceList(
																r
																.DeviceType
																.Mic
																)
															.then(
																(function(
																	e
																	) {
																	t(e)
																})
																)
															.catch(
																(function(
																	t
																	) {
																	n(e.parseError(
																		r
																		.DeviceType
																		.Mic,
																		t
																		))
																})
																)
													})).catch((function(
														t) {
														n(e.parseError(
															r
															.DeviceType
															.Mic,
															t
															))
													})) : n(new i
														.DeviceError(i
															.DeviceErrorCode
															.ERROR_DEVICE_NOTSUPPORT,
															"not support navigator.mediaDevices"
															))
											}))
										}, e.prototype.getAudioTrack = function(e) {
											var t = this;
											return new Promise((function(n, o) {
												var a;
												t.checkSupport() ? (a =
													e && e
													.deviceId ? {
														audio: {
															deviceId: e
																.deviceId
														}
													} : {
														audio: !0
													}, navigator
													.mediaDevices
													.getUserMedia(a)
													.then((function(
														e) {
														n(e.getAudioTracks()[
															0
															])
													})).catch((
														function(
															e) {
															o(t.parseError(
																r
																.DeviceType
																.Mic,
																e
																))
														}))) : o(
													new i
													.DeviceError(i
														.DeviceErrorCode
														.ERROR_DEVICE_NOTSUPPORT,
														"not support navigator.mediaDevices"
														))
											}))
										}, e.prototype.getVideoTrack = function(e) {
											var t = this;
											return new Promise((function(n, o) {
												if (t.checkSupport()) {
													var a = t
														.createVideoConstraints(
															e);
													navigator
														.mediaDevices
														.getUserMedia(a)
														.then((function(
															e) {
															n(e.getVideoTracks()[
																0
																])
														})).catch((
															function(
																e) {
																o(t.parseError(
																	r
																	.DeviceType
																	.Camera,
																	e
																	))
															}))
												} else o(new i
													.DeviceError(i
														.DeviceErrorCode
														.ERROR_DEVICE_NOTSUPPORT,
														"not support navigator.mediaDevices"
														))
											}))
										}, e.prototype.getScreenTrack = function(
										e) {
											var t = this;
											return new Promise((function(n, o) {
												t.checkSupportScreenShare() ?
													navigator
													.mediaDevices
													.getDisplayMedia(e)
													.then((function(e) {
														n(e)
													})).catch((function(
														e) {
														o(t.parseError(
															r
															.DeviceType
															.Screen,
															e
															))
													})) : o(new i
														.DeviceError(i
															.DeviceErrorCode
															.ERROR_SCREENSHARE_NOTSUPPORT,
															"browser not support screenshare"
															))
											}))
										}, e.prototype.checkSupport = function() {
											return !!(navigator && navigator
												.mediaDevices && navigator
												.mediaDevices
												.enumerateDevices && navigator
												.mediaDevices.getUserMedia)
										}, e.prototype.getDeviceList = function(e) {
											return new Promise((function(t, n) {
												navigator.mediaDevices
													.enumerateDevices()
													.then((function(n) {
														var
													i = [];
														n.forEach(
																(function(
																	t
																	) {
																	t.kind ===
																		e &&
																		i
																		.push(
																			t
																			)
																})
																),
															t(i)
													})).catch((function(
														e) {
														n(e)
													}))
											}))
										}, e.prototype.getDeviceRight = function(
										e) {
											return new Promise((function(t, n) {
												var i;
												r.DeviceType.Camera ===
													e ? i = {
														video: !0
													} : r.DeviceType
													.Mic === e && (i = {
														audio: !0
													}), navigator
													.mediaDevices
													.getUserMedia(i)
													.then((function(e) {
														e.getVideoTracks()
															.forEach(
																(function(
																	e
																	) {
																	e.stop()
																})
																),
															t(
																void 0)
													})).catch((function(
														e) {
														n(e)
													}))
											}))
										}, e.prototype.parseError = function(e, t) {
											var n = null;
											return r.DeviceType.Mic === e ? n = this
												.parseAudioError(t) : r.DeviceType
												.Camera === e ? n = this
												.parseVideoError(t) : r.DeviceType
												.Screen === e && (n = this
													.parseScreenError(t)), null ===
												n ? new i.DeviceError(i
													.DeviceErrorCode
													.ERROR_DEVICE_UNKNOWNERROR, ""
													) : n
										}, e.prototype.parseAudioError = function(
										e) {
											return e.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_DEVICENOTFOUND || e
												.name === i.DeviceErrorDescription
												.ERRORNAME_DEVICENOTFOUND ? new i
												.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_AUDIODEVICE_NOTFOUND,
													"audio device not found") : e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_DEVICENOTALLOWED || e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_MACSAFARI_DEVICENOTALLOWED ?
												new i.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_AUDIODEVICE_NOTALLOWED,
													"audio device not allowed") : e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_MACCHROME_DEVICENOTREADABLE ||
												e.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_AUDIODEVICENOTREADABLE ||
												e.message === i
												.DeviceErrorDescription
												.ERRORNAME_DEVICENOTREADABLE ? new i
												.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_AUDIODEVICE_NOTREADABLE,
													"audio device not readable") :
												null
										}, e.prototype.parseVideoError = function(
										e) {
											return e.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_DEVICENOTFOUND || e
												.name === i.DeviceErrorDescription
												.ERRORNAME_DEVICENOTFOUND ? new i
												.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_VIDEODEVICE_NOTFOUND,
													"video device not found") : e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_DEVICENOTALLOWED || e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_MOBILEDEVICE_NOTALLOWED ||
												e.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_MACSAFARI_DEVICENOTALLOWED ?
												new i.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_VIDEODEVICE_NOTALLOWED,
													"video device not allowed") : e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_MACCHROME_DEVICENOTREADABLE ||
												e.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_VIDEODEVICENOTREADABLE ||
												e.name === i.DeviceErrorDescription
												.ERRORNAME_DEVICENOTREADABLE ? new i
												.DeviceError(i.DeviceErrorCode
													.ERROR_DEVICE_VIDEODEVICE_NOTREADABLE,
													"video device not readable") :
												null
										}, e.prototype.parseScreenError = function(
											e) {
											return e.name === i
												.DeviceErrorDescription
												.ERRORNAME_DEVICENOTALLOWED ? e
												.message === i
												.DeviceErrorDescription
												.ERRORMESSAGE_DEVICENOTALLOWED ?
												new i.DeviceError(i.DeviceErrorCode
													.ERROR_SCREENSHARE_NOTALLOWED, e
													.message) : new i.DeviceError(i
													.DeviceErrorCode
													.ERROR_SCREENSHARE_NOPERMISSION,
													e.message) : e.name === i
												.DeviceErrorDescription
												.ERRORNAME_INVALID_ACCESS ? new i
												.DeviceError(i.DeviceErrorCode
													.ERROR_SCREENSHARE_INVALIDACCESS,
													e.message) : null
										}, e.prototype.createVideoConstraints =
										function(e) {
											return e.deviceId || e.width || e
												.height || e.frameRate ? {
													video: {
														deviceId: {
															exact: e.deviceId
														},
														width: e.width,
														height: e.height,
														frameRate: e.frameRate
													}
												} : {
													video: !0
												}
										}, e
								}();
							t.BaseDeviceManager = o
						},
						913: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.IosDeviceManager = void 0;
							var o = function(e) {
								function t() {
									return e.call(this) || this
								}
								return r(t, e), t
							}(n(583).MobileDeviceManager);
							t.IosDeviceManager = o
						},
						331: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.LinuxDeviceManager = void 0;
							var o = function(e) {
								function t() {
									return e.call(this) || this
								}
								return r(t, e), t
							}(n(62).BaseDeviceManager);
							t.LinuxDeviceManager = o
						},
						1: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.MacDeviceManager = void 0;
							var o = function(e) {
								function t() {
									return e.call(this) || this
								}
								return r(t, e), t
							}(n(62).BaseDeviceManager);
							t.MacDeviceManager = o
						},
						583: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.MobileDeviceManager = void 0;
							var o = n(603),
								a = function(e) {
									function t() {
										return e.call(this) || this
									}
									return r(t, e), t.prototype
										.checkSupportScreenShare = function() {
											return !1
										}, t.prototype.getScreenTrack = function(
										e) {
											return new Promise((function(e, t) {
												t(new o.DeviceError(o
													.DeviceErrorCode
													.ERROR_SCREENSHARE_NOTSUPPORT,
													"mobile not support screenshare"
													))
											}))
										}, t.prototype.createVideoConstraints =
										function(e) {
											return e.deviceId || e.facingMode || e
												.width || e.height ? {
													video: {
														deviceId: e.facingMode ? e
															.facingMode : e
															.deviceId,
														width: e.width,
														height: e.height
													}
												} : {
													video: !0
												}
										}, t
								}(n(62).BaseDeviceManager);
							t.MobileDeviceManager = a
						},
						935: function(e, t, n) {
							var i, r = this && this.__extends || (i = function(e,
							t) {
								return (i = Object.setPrototypeOf || {
										__proto__: []
									}
									instanceof Array && function(e, t) {
										e.__proto__ = t
									} || function(e, t) {
										for (var n in t) Object
											.prototype.hasOwnProperty
											.call(t, n) && (e[n] = t[n])
									})(e, t)
							}, function(e, t) {
								function n() {
									this.constructor = e
								}
								i(e, t), e.prototype = null === t ? Object
									.create(t) : (n.prototype = t.prototype,
										new n)
							});
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.WindowsDeviceManager = void 0;
							var o = function(e) {
								function t() {
									return e.call(this) || this
								}
								return r(t, e), t
							}(n(62).BaseDeviceManager);
							t.WindowsDeviceManager = o
						},
						607: (e, t, n) => {
							Object.defineProperty(t, "__esModule", {
								value: !0
							}), t.BrowserDeviceManager = void 0;
							var i = n(304);
							Object.defineProperty(t, "BrowserDeviceManager", {
								enumerable: !0,
								get: function() {
									return i.BrowserDeviceManager
								}
							}), window && (window.BrowserDeviceManager = i
								.BrowserDeviceManager)
						},
						101: (e, t) => {
							var n;
							Object.defineProperty(t, "__esModule", {
									value: !0
								}), t.SystemUtil = void 0,
								function(e) {
									e[e.Unknown = 0] = "Unknown", e[e.MacOS = 1] =
										"MacOS", e[e.Windows = 2] = "Windows", e[e
											.Android = 3] = "Android", e[e.Iphone =
											4] = "Iphone", e[e.Ipad = 5] = "Ipad",
										e[e.Linux = 6] = "Linux"
								}(n || (n = {}));
							var i = function() {
								function e() {
									this.systemType = n.Unknown, this
										.getSystemInfo()
								}
								return Object.defineProperty(e.prototype,
										"isIos", {
											get: function() {
												return this.systemType === n
													.Ipad || this
													.systemType === n.Iphone
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e.prototype,
										"isAndroid", {
											get: function() {
												return this.systemType === n
													.Android
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e.prototype,
										"isMacOS", {
											get: function() {
												return this.systemType === n
													.MacOS
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e.prototype,
										"isWindows", {
											get: function() {
												return this.systemType === n
													.Windows
											},
											enumerable: !1,
											configurable: !0
										}), Object.defineProperty(e.prototype,
										"isLinux", {
											get: function() {
												return this.systemType === n
													.Linux
											},
											enumerable: !1,
											configurable: !0
										}), e.prototype.getSystemInfo =
									function() {
										if (navigator && navigator.userAgent) {
											var e = navigator.userAgent
												.toLocaleLowerCase();
											e.indexOf("ipad") > -1 ? this
												.systemType = n.Ipad : e
												.indexOf("iphone") > -1 ? this
												.systemType = n.Iphone : e
												.indexOf("android") > -1 ? this
												.systemType = n.Android : e
												.indexOf("win") > -1 ? this
												.systemType = n.Windows : e
												.indexOf("mac") > -1 ? this
												.systemType = n.MacOS : e
												.indexOf("linux") > -1 ? this
												.systemType = n.Linux : e
												.indexOf("") > -1 && (this
													.systemType = n.Unknown)
										}
									}, e
							}();
							t.SystemUtil = i
						}
					},
					t = {};
				return function n(i) {
					if (t[i]) return t[i].exports;
					var r = t[i] = {
						exports: {}
					};
					return e[i].call(r.exports, r, r.exports, n), r.exports
				}(607)
			})()
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__awaiter || function(e, t, n, i) {
					return new(n || (n = Promise))((function(r, o) {
						function a(e) {
							try {
								c(i.next(e))
							} catch (e) {
								o(e)
							}
						}

						function s(e) {
							try {
								c(i.throw(e))
							} catch (e) {
								o(e)
							}
						}

						function c(e) {
							var t;
							e.done ? r(e.value) : (t = e.value, t instanceof n ? t :
								new n((function(e) {
									e(t)
								}))).then(a, s)
						}
						c((i = i.apply(e, t || [])).next())
					}))
				},
				a = this && this.__generator || function(e, t) {
					var n, i, r, o, a = {
						label: 0,
						sent: function() {
							if (1 & r[0]) throw r[1];
							return r[1]
						},
						trys: [],
						ops: []
					};
					return o = {
						next: s(0),
						throw: s(1),
						return: s(2)
					}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
						return this
					}), o;

					function s(o) {
						return function(s) {
							return function(o) {
								if (n) throw new TypeError(
									"Generator is already executing.");
								for (; a;) try {
									if (n = 1, i && (r = 2 & o[0] ? i.return : o[
											0] ? i.throw || ((r = i.return) && r
												.call(i), 0) : i.next) && !(r = r
											.call(i, o[1])).done) return r;
									switch (i = 0, r && (o = [2 & o[0], r.value]),
										o[0]) {
										case 0:
										case 1:
											r = o;
											break;
										case 4:
											return a.label++, {
												value: o[1],
												done: !1
											};
										case 5:
											a.label++, i = o[1], o = [0];
											continue;
										case 7:
											o = a.ops.pop(), a.trys.pop();
											continue;
										default:
											if (!((r = (r = a.trys).length > 0 && r[
														r.length - 1]) || 6 !== o[
													0] && 2 !== o[0])) {
												a = 0;
												continue
											}
											if (3 === o[0] && (!r || o[1] > r[0] &&
													o[1] < r[3])) {
												a.label = o[1];
												break
											}
											if (6 === o[0] && a.label < r[1]) {
												a.label = r[1], r = o;
												break
											}
											if (r && a.label < r[2]) {
												a.label = r[2], a.ops.push(o);
												break
											}
											r[2] && a.ops.pop(), a.trys.pop();
											continue
									}
									o = t.call(e, a)
								} catch (e) {
									o = [6, e], i = 0
								} finally {
									n = r = 0
								}
								if (5 & o[0]) throw o[1];
								return {
									value: o[0] ? o[1] : void 0,
									done: !0
								}
							}([o, s])
						}
					}
				},
				s = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.RtsPeerconnection = void 0;
			var c = n(28),
				u = s(n(1)),
				d = n(29),
				l = n(33),
				p = n(4),
				f = n(5),
				v = function(e) {
					function t() {
						var t = e.call(this) || this;
						return t.monitor = new d.RtpMonitor, t.monitor.on("onMonitorEvent", (
							function(e) {
								t.emit("onMonitorEvent", e)
							})), t.monitor.on("streamEnded", (function() {
							t.emit("streamEnded")
						})), t.monitor.on("canPlay", (function() {
							t.emit("canPlay")
						})), t
					}
					return r(t, e), t.prototype.getMonitor = function() {
						return this.monitor
					}, t.prototype.playStart = function() {
						this.monitor.resetTimer(1e3)
					}, t.prototype.sample = function() {
						return o(this, void 0, void 0, (function() {
							return a(this, (function(e) {
								switch (e.label) {
									case 0:
										return [4, this.monitor
											.onMonitorTimer()
										];
									case 1:
										return e.sent(), [2]
								}
							}))
						}))
					}, t.prototype.createOffer = function(e, t, n) {
						var i = this;
						return new Promise((function(r, o) {
							if (i.pc = new RTCPeerConnection({
									googCpuOveruseDetection: !1
								}), i.pc.onconnectionstatechange = function() {
									"connected" === (i.pc || {}).connectionState
										&& i.emit("onConnected")
								}, n) {
								i.localStream = n, i.sdpUtil = new c.SdpUtil(i
									.localStream);
								var a = i.addStream();
								if (0 !== a) return i.pc = void 0, void o(new f
									.RtsError(a, a === p.ErrorCode
										.ERROR_MEDIASTREAMTRACK_AUDIO_NONE ?
										"need audio track" : "", ""))
							} else i.sdpUtil = new c.SdpUtil;
							i.pc.createOffer({
								offerToReceiveAudio: e,
								offerToReceiveVideo: t
							}).then((function(e) {
								i.sdpUtil ? (i.sdpUtil.init(String(e
										.sdp)), i.sdpUtil
									.addNack(), i.sdpUtil
									.addSps(), n && i.sdpUtil
									.modifyTrackName(), i.pc &&
									(e.sdp = i.sdpUtil.sdp, i.pc
										.setLocalDescription(e)
										.then((function() {
											i.pc ? r(i
													.pc
													.localDescription
													) :
												o(new f
													.RtsError(
														p
														.ErrorCode
														.ERROR_CREATEOFFER,
														"no pc",
														""
														)
													)
										})).catch((function(e) {
											o(new f.RtsError(
												p
												.ErrorCode
												.ERROR_CREATEOFFER,
												"setLocalDescription error",
												""
												))
										})))) : o(new f
									.RtsError(p.ErrorCode
										.ERROR_CREATEOFFER,
										"no sdp", ""))
							})).catch((function(e) {
								o(new f.RtsError(p.ErrorCode
									.ERROR_CREATEOFFER, e
									.message ? e.message :
									"create offer error", ""
									))
							}))
						}))
					}, t.prototype.recvAnswer = function(e) {
						var t = this;
						return new Promise((function(n, i) {
							if (t.pc) {
								if (t.pc.ontrack = function(e) {
										t.pc && t.monitor.start(t.pc), t.emit(
											"onTrackEvent", e)
									}, "closed" === t.pc.signalingState)
								return void i({
										message: "PeerConnection signalingState is closed"
									});
								t.pc.setRemoteDescription(
									new RTCSessionDescription(e.jsep)).then(
									(function(e) {
										t.pc && t.localStream && t
											.localStream.setEncodeParam(
												t.pc), n(e)
									})).catch((function(e) {
									i(e)
								}))
							} else i({
								message: "no PeerConnection"
							})
						}))
					}, t.prototype.removeTrack = function(e, t) {
						var n = this;
						return new Promise((function(i, r) {
							n.pc && n.dataChannel && n.dataChannel.removeTrack(
								e, t).then((function() {})).catch((function(
								e) {
								r(e)
							}))
						}))
					}, t.prototype.replaceTrack = function(e, t, n) {
						var i = this;
						return new Promise((function(r, o) {
							n || i.pc && i.dataChannel && i.dataChannel
								.removeTrack(e, t).then((function() {})).catch((
									function(e) {
										o(e)
									}))
						}))
					}, t.prototype.dispose = function() {
						this.pc && (this.pc.onconnectionstatechange = function() {}, this.pc
								.ontrack = function() {}, this.pc.close(), this.pc = void 0
								), this.sdpUtil && (this.sdpUtil.dispose(), this.sdpUtil =
								void 0), this.localStream && (this.localStream = void 0),
							this.monitor.stop()
					}, t.prototype.addStream = function() {
						return this.localStream && this.localStream.audioTrack ? this.pc ? (
								this.pc.addTrack(this.localStream.audioTrack, this
									.localStream.mediaStream), this.localStream
								.videoTrack && this.pc.addTrack(this.localStream.videoTrack,
									this.localStream.mediaStream), 0) : p.ErrorCode
							.ERROR_PREERCONNECTION_UNKNOWN : p.ErrorCode
							.ERROR_MEDIASTREAMTRACK_AUDIO_NONE
					}, t.prototype.initDataChannel = function() {
						!this.dataChannel && this.pc && (this.dataChannel = new l
							.Datachannel(this.pc))
					}, t
				}(u.default);
			t.RtsPeerconnection = v
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.ReceiverMonitorData = void 0;
			var a = o(n(1)),
				s = n(31),
				c = function(e) {
					function t() {
						var t = e.call(this) || this;
						return t.streamEnded = !1, t.currentTimeGap = 0, t.lastTimeStamp = 0, t
							.transportStats = {}, t.inboundRtpStreamStats = {}, t
							.inboundRtpStreamStatsDiff = {}, t.receiver = null, t.canplay = !1,
							t
					}
					return r(t, e), Object.defineProperty(t.prototype, "rtpReceiver", {
							set: function(e) {
								this.receiver = e
							},
							enumerable: !1,
							configurable: !0
						}), Object.defineProperty(t.prototype, "isExist", {
							get: function() {
								return null != this.receiver
							},
							enumerable: !1,
							configurable: !0
						}), Object.defineProperty(t.prototype, "isPlaying", {
							get: function() {
								return this.canplay
							},
							enumerable: !1,
							configurable: !0
						}), Object.defineProperty(t.prototype, "isStreamEnded", {
							get: function() {
								return this.streamEnded
							},
							enumerable: !1,
							configurable: !0
						}), Object.defineProperty(t.prototype, "monitorData", {
							get: function() {
								var e = this.inboundRtpStreamStatsDiff || {},
									t = this.currentTimeGap;
								return {
									inboundRtpStats: this.inboundRtpStreamStats,
									inboundRtpStatsPerSec: {
										bytesReceivedPerSecond: e.bytesReceived / t ||
											0,
										framesDecodedPerSecond: e.framesDecoded / t || 0
									},
									transportStats: this.transportStats
								}
							},
							enumerable: !1,
							configurable: !0
						}), t.prototype.getInfo = function() {
							var e = this;
							if (this.receiver && this.receiver.transport && "closed" === this
								.receiver.transport.state && this.canplay && (this
									.streamEnded = !0, this.emit("streamEnded"), this
									.canplay = !1), this.receiver && this.receiver.getStats)
								return new Promise((function(t, n) {
									var i;
									null === (i = e.receiver) || void 0 === i || i
										.getStats().then((function(n) {
											n.forEach((function(t) {
												if (t && t
													.timestamp !==
													e
													.lastTimeStamp
													) switch (t
													.type) {
													case s
													.RTCStatsType
													.CandidatePair:
														e.onCandidatePair(
															t
															);
														break;
													case s
													.RTCStatsType
													.InboundRtp:
														e.onInBoundRtp(
															t
															);
														break;
													case s
													.RTCStatsType
													.RemoteCandidate:
														e.onRemoteCandidate(
															t
															);
														break;
													case s
													.RTCStatsType
													.Track:
														e.onTrack(
															t
															)
												}
											})), t("")
										})).catch((function(e) {
											n(e)
										}))
								}))
						}, t.prototype.dispose = function() {
							this.reset()
						}, t.prototype.onCandidatePair = function(e) {
							("succeeded" === e.state || e.bytesReceived) && (this
								.transportStats = {
									timestamp: Math.floor(e.timestamp),
									rtt: e.currentRoundTripTime || -1,
									bytesReceived: e.bytesReceived,
									bytesSent: e.bytesSent
								})
						}, t.prototype.onInBoundRtp = function(e) {
							this.currentTimeGap = (e.timestamp - this.lastTimeStamp) / 1e3, this
								.lastTimeStamp = e.timestamp, this.inboundRtpStreamStatsDiff =
								this.calcDiff(e, this.inboundRtpStreamStats, ["bytesReceived",
									"framesDecoded"
								]), this.inboundRtpStreamStats = e, !this.canplay && Number(e
									.bytesReceived) > 0 && (this.canplay = !0, this.emit(
									"canPlay"))
						}, t.prototype.calcDiff = function(e, t, n) {
							var i = {};
							return n.forEach((function(n) {
								i[n] = Number(e[n] || 0) - Number(t[n] || 0)
							})), i
						}, t.prototype.onRemoteCandidate = function(e) {}, t.prototype.onTrack =
						function(e) {}, t.prototype.reset = function() {
							this.currentTimeGap = 0, this.lastTimeStamp = 0, this
								.transportStats = {}, this.inboundRtpStreamStats = {}, this
								.inboundRtpStreamStatsDiff = {}, this.receiver = null, this
								.canplay = !1, this.streamEnded = !1
						}, t
				}(a.default);
			t.ReceiverMonitorData = c
		}, function(e, t, n) {
			e.exports = n(34)
		}, function(e, t, n) {
			e.exports = function(e, t) {
				return function() {
					for (var n = new Array(arguments.length), i = 0; i < n.length; i++)
						n[i] = arguments[i];
					return e.apply(t, n)
				}
			}
		}, function(e, t, n) {
			var i = n(0);

			function r(e) {
				return encodeURIComponent(e).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(
					/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(
					/%5D/gi, "]")
			}
			e.exports = function(e, t, n) {
				if (!t) return e;
				var o;
				if (n) o = n(t);
				else if (i.isURLSearchParams(t)) o = t.toString();
				else {
					var a = [];
					i.forEach(t, (function(e, t) {
						null != e && (i.isArray(e) ? t += "[]" : e = [e], i
							.forEach(e, (function(e) {
								i.isDate(e) ? e = e.toISOString() :
									i.isObject(e) && (e = JSON
										.stringify(e)), a.push(r(
										t) + "=" + r(e))
							})))
					})), o = a.join("&")
				}
				if (o) {
					var s = e.indexOf("#"); - 1 !== s && (e = e.slice(0, s)), e += (-1 === e
						.indexOf("?") ? "?" : "&") + o
				}
				return e
			}
		}, function(e, t, n) {
			e.exports = function(e, t, n, i, r) {
				return e.config = t, n && (e.code = n), e.request = i, e.response = r, e
					.isAxiosError = !0, e.toJSON = function() {
						return {
							message: this.message,
							name: this.name,
							description: this.description,
							number: this.number,
							fileName: this.fileName,
							lineNumber: this.lineNumber,
							columnNumber: this.columnNumber,
							stack: this.stack,
							config: this.config,
							code: this.code
						}
					}, e
			}
		}, function(e, t, n) {
			var i = n(0),
				r = n(41),
				o = n(42),
				a = n(14),
				s = n(43),
				c = n(46),
				u = n(47),
				d = n(17);
			e.exports = function(e) {
				return new Promise((function(t, n) {
					var l = e.data,
						p = e.headers,
						f = e.responseType;
					i.isFormData(l) && delete p["Content-Type"];
					var v = new XMLHttpRequest;
					if (e.auth) {
						var h = e.auth.username || "",
							m = e.auth.password ? unescape(encodeURIComponent(e
								.auth.password)) : "";
						p.Authorization = "Basic " + btoa(h + ":" + m)
					}
					var y = s(e.baseURL, e.url);

					function g() {
						if (v) {
							var i = "getAllResponseHeaders" in v ? c(v
									.getAllResponseHeaders()) : null,
								o = {
									data: f && "text" !== f && "json" !== f ? v
										.response : v.responseText,
									status: v.status,
									statusText: v.statusText,
									headers: i,
									config: e,
									request: v
								};
							r(t, n, o), v = null
						}
					}
					if (v.open(e.method.toUpperCase(), a(y, e.params, e
							.paramsSerializer), !0), v.timeout = e.timeout,
						"onloadend" in v ? v.onloadend = g : v
						.onreadystatechange = function() {
							v && 4 === v.readyState && (0 !== v.status || v
								.responseURL && 0 === v.responseURL.indexOf(
									"file:")) && setTimeout(g)
						}, v.onabort = function() {
							v && (n(d("Request aborted", e, "ECONNABORTED", v)),
								v = null)
						}, v.onerror = function() {
							n(d("Network Error", e, null, v)), v = null
						}, v.ontimeout = function() {
							var t = "timeout of " + e.timeout + "ms exceeded";
							e.timeoutErrorMessage && (t = e
								.timeoutErrorMessage), n(d(t, e, e
									.transitional && e.transitional
									.clarifyTimeoutError ? "ETIMEDOUT" :
									"ECONNABORTED", v)), v = null
						}, i.isStandardBrowserEnv()) {
						var R = (e.withCredentials || u(y)) && e
							.xsrfCookieName ? o.read(e.xsrfCookieName) : void 0;
						R && (p[e.xsrfHeaderName] = R)
					}
					"setRequestHeader" in v && i.forEach(p, (function(e, t) {
							void 0 === l && "content-type" === t
								.toLowerCase() ? delete p[t] : v
								.setRequestHeader(t, e)
						})), i.isUndefined(e.withCredentials) || (v
							.withCredentials = !!e.withCredentials), f &&
						"json" !== f && (v.responseType = e.responseType),
						"function" == typeof e.onDownloadProgress && v
						.addEventListener("progress", e.onDownloadProgress),
						"function" == typeof e.onUploadProgress && v.upload && v
						.upload.addEventListener("progress", e
						.onUploadProgress), e.cancelToken && e.cancelToken
						.promise.then((function(e) {
							v && (v.abort(), n(e), v = null)
						})), l || (l = null), v.send(l)
				}))
			}
		}, function(e, t, n) {
			var i = n(15);
			e.exports = function(e, t, n, r, o) {
				var a = new Error(e);
				return i(a, t, n, r, o)
			}
		}, function(e, t, n) {
			e.exports = function(e) {
				return !(!e || !e.__CANCEL__)
			}
		}, function(e, t, n) {
			var i = n(0);
			e.exports = function(e, t) {
				t = t || {};
				var n = {},
					r = ["url", "method", "data"],
					o = ["headers", "auth", "proxy", "params"],
					a = ["baseURL", "transformRequest", "transformResponse",
						"paramsSerializer", "timeout", "timeoutMessage", "withCredentials",
						"adapter", "responseType", "xsrfCookieName", "xsrfHeaderName",
						"onUploadProgress", "onDownloadProgress", "decompress",
						"maxContentLength", "maxBodyLength", "maxRedirects", "transport",
						"httpAgent", "httpsAgent", "cancelToken", "socketPath",
						"responseEncoding"
					],
					s = ["validateStatus"];

				function c(e, t) {
					return i.isPlainObject(e) && i.isPlainObject(t) ? i.merge(e, t) : i
						.isPlainObject(t) ? i.merge({}, t) : i.isArray(t) ? t.slice() : t
				}

				function u(r) {
					i.isUndefined(t[r]) ? i.isUndefined(e[r]) || (n[r] = c(void 0, e[r])) :
						n[r] = c(e[r], t[r])
				}
				i.forEach(r, (function(e) {
					i.isUndefined(t[e]) || (n[e] = c(void 0, t[e]))
				})), i.forEach(o, u), i.forEach(a, (function(r) {
					i.isUndefined(t[r]) ? i.isUndefined(e[r]) || (n[r] = c(
						void 0, e[r])) : n[r] = c(void 0, t[r])
				})), i.forEach(s, (function(i) {
					i in t ? n[i] = c(e[i], t[i]) : i in e && (n[i] = c(void 0,
						e[i]))
				}));
				var d = r.concat(o).concat(a).concat(s),
					l = Object.keys(e).concat(Object.keys(t)).filter((function(e) {
						return -1 === d.indexOf(e)
					}));
				return i.forEach(l, u), n
			}
		}, function(e, t, n) {
			function i(e) {
				this.message = e
			}
			i.prototype.toString = function() {
				return "Cancel" + (this.message ? ": " + this.message : "")
			}, i.prototype.__CANCEL__ = !0, e.exports = i
		}, function(e, t, n) {
			var i = this && this.__awaiter || function(e, t, n, i) {
					return new(n || (n = Promise))((function(r, o) {
						function a(e) {
							try {
								c(i.next(e))
							} catch (e) {
								o(e)
							}
						}

						function s(e) {
							try {
								c(i.throw(e))
							} catch (e) {
								o(e)
							}
						}

						function c(e) {
							var t;
							e.done ? r(e.value) : (t = e.value, t instanceof n ? t :
								new n((function(e) {
									e(t)
								}))).then(a, s)
						}
						c((i = i.apply(e, t || [])).next())
					}))
				},
				r = this && this.__generator || function(e, t) {
					var n, i, r, o, a = {
						label: 0,
						sent: function() {
							if (1 & r[0]) throw r[1];
							return r[1]
						},
						trys: [],
						ops: []
					};
					return o = {
						next: s(0),
						throw: s(1),
						return: s(2)
					}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
						return this
					}), o;

					function s(o) {
						return function(s) {
							return function(o) {
								if (n) throw new TypeError(
									"Generator is already executing.");
								for (; a;) try {
									if (n = 1, i && (r = 2 & o[0] ? i.return : o[
											0] ? i.throw || ((r = i.return) && r
												.call(i), 0) : i.next) && !(r = r
											.call(i, o[1])).done) return r;
									switch (i = 0, r && (o = [2 & o[0], r.value]),
										o[0]) {
										case 0:
										case 1:
											r = o;
											break;
										case 4:
											return a.label++, {
												value: o[1],
												done: !1
											};
										case 5:
											a.label++, i = o[1], o = [0];
											continue;
										case 7:
											o = a.ops.pop(), a.trys.pop();
											continue;
										default:
											if (!((r = (r = a.trys).length > 0 && r[
														r.length - 1]) || 6 !== o[
													0] && 2 !== o[0])) {
												a = 0;
												continue
											}
											if (3 === o[0] && (!r || o[1] > r[0] &&
													o[1] < r[3])) {
												a.label = o[1];
												break
											}
											if (6 === o[0] && a.label < r[1]) {
												a.label = r[1], r = o;
												break
											}
											if (r && a.label < r[2]) {
												a.label = r[2], a.ops.push(o);
												break
											}
											r[2] && a.ops.pop(), a.trys.pop();
											continue
									}
									o = t.call(e, a)
								} catch (e) {
									o = [6, e], i = 0
								} finally {
									n = r = 0
								}
								if (5 & o[0]) throw o[1];
								return {
									value: o[0] ? o[1] : void 0,
									done: !0
								}
							}([o, s])
						}
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.SupportUtil = void 0;
			var o = n(2),
				a = n(4),
				s = n(53),
				c = function() {
					this.errorCode = 0, this.message = ""
				},
				u = function() {
					function e() {
						this.webviewInfo = {}
					}
					return e.prototype.isSupport = function(e) {
						var t = this;
						return new Promise((function(n, i) {
							var r = new c;
							t.checkWebRtcSupport() || (r.errorCode = a.ErrorCode
								.ERROR_NOTSUPPORT_WEBRTC, r.message = s.EN
								.MESSAGE_NOTSUPPORT_WEBRTC), t.checkBrowser(
								r) ? e.isReceiveVideo ? t.checkH264(r).then(
								(function() {
									n(r)
								})).catch((function() {
								i(r)
							})) : n(r) : i(r)
						}))
					}, e.prototype.checkWebRtcSupport = function() {
						return !!window.RTCPeerConnection
					}, e.prototype.checkBrowser = function(e) {
						if (o.SystemUtil.isIos) {
							if (o.BrowserUtil.isSafari || o.BrowserUtil.isQQBrowser)
							return o.BrowserUtil.browserMainVersion >= 11 || (e
									.errorCode = a.ErrorCode.ERROR_BROWSER_VERSIONLOW, e
									.message = s.EN.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isEdge) return o.BrowserUtil
								.browserMainVersion >= 79 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isMicroMessenger) return !!o.BrowserUtil
								.compareVersion("7.0.9") || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isDingTalk) return !!o.SystemUtil
								.compareVersion("11.2.5") || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (this.isWebview()) return !!this.compareVersion(o.SystemUtil
								.systemVersion, "14.3") || (e.errorCode = a
								.ErrorCode.ERROR_BROWSER_VERSIONLOW, e.message = s
								.EN.MESSAGE_BROWSER_VERSIONLOW, !1)
						} else if (o.SystemUtil.isAndroid) {
							if (this.checkPrivateUcWebview()) return !0;
							if (o.BrowserUtil.isChrome || o.BrowserUtil.isQQBrowser || o
								.BrowserUtil.isHuaweiBrowser) return o.BrowserUtil
								.browserMainVersion >= 63 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (this.isSamsungBrowser()) return this.getChromeVersion()
								.mainVersion >= 63 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isEdge) return o.BrowserUtil
								.browserMainVersion >= 79 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isMicroMessenger) return !!o.BrowserUtil
								.compareVersion("7.0.9") || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isOppoBrowser) {
								var t = (this.getUa().toLowerCase().match(
									/heytapbrowser\/([\d.]+)/) || [])[1] || "";
								return !!this.compareVersion(t, "40.7.39.1") || (e
									.errorCode = a.ErrorCode.ERROR_BROWSER_VERSIONLOW, e
									.message = s.EN.MESSAGE_BROWSER_VERSIONLOW, !1)
							}
							if (o.BrowserUtil.isX5Core) return !0;
							if (this.isWebview()) return Number(this.webviewInfo
								.mainVersion) >= 79 || (e.errorCode = a.ErrorCode
								.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
								.MESSAGE_BROWSER_VERSIONLOW, !1)
						} else if (o.SystemUtil.isMacOS) {
							if (o.BrowserUtil.isElectron) return !0;
							if (o.BrowserUtil.isSafari) return o.BrowserUtil
								.browserMainVersion >= 11 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isChrome) return o.BrowserUtil
								.browserMainVersion >= 63 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isEdge) return o.BrowserUtil
								.browserMainVersion >= 79 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isFirefox) return o.BrowserUtil
								.browserMainVersion >= 62 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isOpera) return o.BrowserUtil
								.browserMainVersion >= 15 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1)
						} else if (o.SystemUtil.isWindows) {
							if (o.BrowserUtil.isElectron) return !0;
							if (o.BrowserUtil.isChrome || o.BrowserUtil.isQQBrowser)
							return o.BrowserUtil.browserMainVersion >= 63 || (e
									.errorCode = a.ErrorCode.ERROR_BROWSER_VERSIONLOW, e
									.message = s.EN.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isEdge) return o.BrowserUtil
								.browserMainVersion >= 79 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isFirefox) return o.BrowserUtil
								.browserMainVersion >= 62 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isOpera) return o.BrowserUtil
								.browserMainVersion >= 15 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1)
						} else if (o.SystemUtil.isLinux) {
							if (o.BrowserUtil.isChrome) return o.BrowserUtil
								.browserMainVersion >= 63 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isEdge) return o.BrowserUtil
								.browserMainVersion >= 79 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1);
							if (o.BrowserUtil.isFirefox) return o.BrowserUtil
								.browserMainVersion >= 62 || (e.errorCode = a.ErrorCode
									.ERROR_BROWSER_VERSIONLOW, e.message = s.EN
									.MESSAGE_BROWSER_VERSIONLOW, !1)
						}
						return 0 === e.errorCode && (e.errorCode = a.ErrorCode
							.ERROR_BROWSER_NOTSUPPORT, e.message = s.EN
							.MESSAGE_BROWSER_NOTSUPPORT), !1
					}, e.prototype.checkH264 = function(e) {
						var t = this;
						return new Promise((function(n, o) {
							return i(t, void 0, void 0, (function() {
								var t = this;
								return r(this, (function(i) {
									switch (i.label) {
										case 0:
											return i
												.trys
												.push([0,
													2, ,
													3
												]), [4,
													this
													.findH264(
														3
														)
												];
										case 1:
										case 2:
											return i
												.sent(),
												[3, 3];
										case 3:
											return (
													new RTCPeerConnection)
												.createOffer({
													offerToReceiveVideo:
														!
														0,
													offerToReceiveAudio:
														!
														0
												}).then(
													(function(
														i
														) {
														t.checkSDPSupportH264(
																i
																.sdp
																) ?
															n(
																void 0) :
															(e.errorCode =
																a
																.ErrorCode
																.ERROR_NOTSUPPORT_H264,
																e
																.message =
																s
																.EN
																.MESSAGE_NOTSUPPORT_H264,
																o()
																)
													}))
												.catch((function(
													t
													) {
													e.errorCode =
														a
														.ErrorCode
														.ERROR_CREATEOFFER,
														e
														.message =
														s
														.EN
														.MESSAGE_CREATEOFFER,
														o()
												})), [2]
									}
								}))
							}))
						}))
					}, e.prototype.checkSDPSupportH264 = function(e) {
						return e.indexOf("H264") > 0 || e.indexOf("h264") > 0 || e.indexOf(
							"H.264") > 0 || e.indexOf("h.264") > 0
					}, e.prototype.checkPrivateUcWebview = function() {
						return this.getUa().indexOf("UniqueCode") > 0
					}, e.prototype.getUa = function() {
						return navigator && navigator.userAgent || ""
					}, e.prototype.compareVersion = function(e, t) {
						void 0 === e && (e = ""), void 0 === t && (t = "");
						for (var n = (e || "").split("."), i = (t || "").split("."), r = 0,
								o = 0, a = 0; a < n.length && a < i.length; ++a) {
							if ((r = isNaN(parseInt(n[a], 10)) ? 0 : parseInt(n[a], 10)) < (
									o = isNaN(parseInt(i[a], 10)) ? 0 : parseInt(i[a], 10)))
								return !1;
							if (r > o) return !0
						}
						return !0
					}, e.prototype.isWebview = function() {
						var e = this.getUa(),
							t = new RegExp("(" + ["WebView",
								"(iPhone|iPod|iPad)(?!.*Safari)",
								"Android.*(wv|.0.0.0)", "Linux; U; Android"
							].join("|") + ")", "ig"),
							n = new RegExp("(" + ["VivoBrowser", "MZBrowser", "MiuiBrowser"]
								.join("|") + ")", "ig"),
							i = !!e.match(t) && !e.match(n);
						if (i && o.SystemUtil.isAndroid) {
							var r = /chrome\/([\d.]+)/i.exec(e);
							try {
								this.webviewInfo.mainVersion = r ? parseInt(r[1].split(".")[
									0], 10) : 0
							} catch (e) {}
						}
						return i
					}, e.prototype.innerFindH264 = function(e, t) {
						var n, i = this;
						return o.SystemUtil.isAndroid && (o.BrowserUtil.isChrome || this
								.isWebview()) && RTCRtpSender && RTCRtpSender
							.getCapabilities ? void(e > 0 ? JSON.stringify(null === (n =
									RTCRtpSender.getCapabilities("video")) || void 0 ===
								n ? void 0 : n.codecs).toLowerCase().includes(
								"video/h264") ? t() : setTimeout((function() {
								i.innerFindH264(e - 1, t)
							}), 1e3) : t()) : t()
					}, e.prototype.findH264 = function(e) {
						var t = this;
						return new Promise((function(n) {
							t.innerFindH264(e, (function() {
								n(null)
							}))
						}))
					}, e.prototype.getChromeVersion = function() {
						var e = "0",
							t = 0,
							n = /chrome\/([\d.]+)/i.exec(this.getUa());
						if (n) try {
							e = n[1], t = n ? parseInt(e.split(".")[0], 10) : 0
						} catch (e) {}
						return {
							version: e,
							mainVersion: t
						}
					}, e.prototype.isSamsungBrowser = function() {
						return this.getUa().toLowerCase().indexOf("samsungbrowser") > -1
					}, e
				}();
			t.SupportUtil = u
		}, function(e, t, n) {
			var i = n(3);

			function r(e, t, n, r, o) {
				var a = i.writeRtpDescription(e.kind, t);
				if (a += i.writeIceParameters(e.iceGatherer.getLocalParameters()), a += i
					.writeDtlsParameters(e.dtlsTransport.getLocalParameters(), "offer" === n ?
						"actpass" : o || "active"), a += "a=mid:" + e.mid + "\r\n", e
					.rtpSender && e.rtpReceiver ? a += "a=sendrecv\r\n" : e.rtpSender ? a +=
					"a=sendonly\r\n" : e.rtpReceiver ? a += "a=recvonly\r\n" : a +=
					"a=inactive\r\n", e.rtpSender) {
					var s = e.rtpSender._initialTrackId || e.rtpSender.track.id;
					e.rtpSender._initialTrackId = s;
					var c = "msid:" + (r ? r.id : "-") + " " + s + "\r\n";
					a += "a=" + c, a += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " " + c,
						e.sendEncodingParameters[0].rtx && (a += "a=ssrc:" + e
							.sendEncodingParameters[0].rtx.ssrc + " " + c, a +=
							"a=ssrc-group:FID " + e.sendEncodingParameters[0].ssrc + " " + e
							.sendEncodingParameters[0].rtx.ssrc + "\r\n")
				}
				return a += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " cname:" + i
					.localCName + "\r\n", e.rtpSender && e.sendEncodingParameters[0].rtx && (
						a += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " cname:" + i
						.localCName + "\r\n"), a
			}

			function o(e, t) {
				var n = {
						codecs: [],
						headerExtensions: [],
						fecMechanisms: []
					},
					i = function(e, t) {
						e = parseInt(e, 10);
						for (var n = 0; n < t.length; n++)
							if (t[n].payloadType === e || t[n].preferredPayloadType === e)
								return t[n]
					},
					r = function(e, t, n, r) {
						var o = i(e.parameters.apt, n),
							a = i(t.parameters.apt, r);
						return o && a && o.name.toLowerCase() === a.name.toLowerCase()
					};
				return e.codecs.forEach((function(i) {
					for (var o = 0; o < t.codecs.length; o++) {
						var a = t.codecs[o];
						if (i.name.toLowerCase() === a.name.toLowerCase() && i
							.clockRate === a.clockRate) {
							if ("rtx" === i.name.toLowerCase() && i.parameters && a
								.parameters.apt && !r(i, a, e.codecs, t.codecs))
								continue;
							(a = JSON.parse(JSON.stringify(a))).numChannels = Math
								.min(i.numChannels, a.numChannels), n.codecs.push(
								a), a.rtcpFeedback = a.rtcpFeedback.filter((
									function(e) {
										for (var t = 0; t < i.rtcpFeedback
											.length; t++)
											if (i.rtcpFeedback[t].type === e
												.type && i.rtcpFeedback[t]
												.parameter === e.parameter)
												return !0;
										return !1
									}));
							break
						}
					}
				})), e.headerExtensions.forEach((function(e) {
					for (var i = 0; i < t.headerExtensions.length; i++) {
						var r = t.headerExtensions[i];
						if (e.uri === r.uri) {
							n.headerExtensions.push(r);
							break
						}
					}
				})), n
			}

			function a(e, t, n) {
				return -1 !== {
					offer: {
						setLocalDescription: ["stable", "have-local-offer"],
						setRemoteDescription: ["stable", "have-remote-offer"]
					},
					answer: {
						setLocalDescription: ["have-remote-offer", "have-local-pranswer"],
						setRemoteDescription: ["have-local-offer", "have-remote-pranswer"]
					}
				} [t][e].indexOf(n)
			}

			function s(e, t) {
				var n = e.getRemoteCandidates().find((function(e) {
					return t.foundation === e.foundation && t.ip === e.ip && t
						.port === e.port && t.priority === e.priority && t
						.protocol === e.protocol && t.type === e.type
				}));
				return n || e.addRemoteCandidate(t), !n
			}

			function c(e, t) {
				var n = new Error(t);
				return n.name = e, n.code = {
					NotSupportedError: 9,
					InvalidStateError: 11,
					InvalidAccessError: 15,
					TypeError: void 0,
					OperationError: void 0
				} [e], n
			}
			e.exports = function(e, t) {
				function n(t, n) {
					n.addTrack(t), n.dispatchEvent(new e.MediaStreamTrackEvent("addtrack", {
						track: t
					}))
				}

				function u(t, n, i, r) {
					var o = new Event("track");
					o.track = n, o.receiver = i, o.transceiver = {
						receiver: i
					}, o.streams = r, e.setTimeout((function() {
						t._dispatchEvent("track", o)
					}))
				}
				var d = function(n) {
					var r = this,
						o = document.createDocumentFragment();
					if (["addEventListener", "removeEventListener", "dispatchEvent"]
						.forEach((function(e) {
							r[e] = o[e].bind(o)
						})), this.canTrickleIceCandidates = null, this
						.needNegotiation = !1, this.localStreams = [], this
						.remoteStreams = [], this._localDescription = null, this
						._remoteDescription = null, this.signalingState = "stable", this
						.iceConnectionState = "new", this.connectionState = "new", this
						.iceGatheringState = "new", n = JSON.parse(JSON.stringify(n ||
							{})), this.usingBundle = "max-bundle" === n.bundlePolicy,
						"negotiate" === n.rtcpMuxPolicy) throw c("NotSupportedError",
						"rtcpMuxPolicy 'negotiate' is not supported");
					switch (n.rtcpMuxPolicy || (n.rtcpMuxPolicy = "require"), n
						.iceTransportPolicy) {
						case "all":
						case "relay":
							break;
						default:
							n.iceTransportPolicy = "all"
					}
					switch (n.bundlePolicy) {
						case "balanced":
						case "max-compat":
						case "max-bundle":
							break;
						default:
							n.bundlePolicy = "balanced"
					}
					if (n.iceServers = function(e, t) {
							var n = !1;
							return (e = JSON.parse(JSON.stringify(e))).filter((function(
								e) {
								if (e && (e.urls || e.url)) {
									var i = e.urls || e.url;
									e.url && !e.urls && console.warn(
										"RTCIceServer.url is deprecated! Use urls instead."
										);
									var r = "string" == typeof i;
									return r && (i = [i]), i = i.filter((
											function(e) {
												return 0 !== e.indexOf(
														"turn:") || -
													1 === e.indexOf(
														"transport=udp"
														) || -1 !== e
													.indexOf(
													"turn:[") || n ?
													0 === e.indexOf(
														"stun:") && t >=
													14393 && -1 === e
													.indexOf(
														"?transport=udp"
														) : (n = !0, !0)
											})), delete e.url, e.urls = r ?
										i[0] : i, !!i.length
								}
							}))
						}(n.iceServers || [], t), this._iceGatherers = [], n
						.iceCandidatePoolSize)
						for (var a = n.iceCandidatePoolSize; a > 0; a--) this
							._iceGatherers.push(new e.RTCIceGatherer({
								iceServers: n.iceServers,
								gatherPolicy: n.iceTransportPolicy
							}));
					else n.iceCandidatePoolSize = 0;
					this._config = n, this.transceivers = [], this._sdpSessionId = i
						.generateSessionId(), this._sdpSessionVersion = 0, this
						._dtlsRole = void 0, this._isClosed = !1
				};
				Object.defineProperty(d.prototype, "localDescription", {
						configurable: !0,
						get: function() {
							return this._localDescription
						}
					}), Object.defineProperty(d.prototype, "remoteDescription", {
						configurable: !0,
						get: function() {
							return this._remoteDescription
						}
					}), d.prototype.onicecandidate = null, d.prototype.onaddstream = null, d
					.prototype.ontrack = null, d.prototype.onremovestream = null, d
					.prototype.onsignalingstatechange = null, d.prototype
					.oniceconnectionstatechange = null, d.prototype
					.onconnectionstatechange = null, d.prototype.onicegatheringstatechange =
					null, d.prototype.onnegotiationneeded = null, d.prototype
					.ondatachannel = null, d.prototype._dispatchEvent = function(e, t) {
						this._isClosed || (this.dispatchEvent(t), "function" == typeof this[
							"on" + e] && this["on" + e](t))
					}, d.prototype._emitGatheringStateChange = function() {
						var e = new Event("icegatheringstatechange");
						this._dispatchEvent("icegatheringstatechange", e)
					}, d.prototype.getConfiguration = function() {
						return this._config
					}, d.prototype.getLocalStreams = function() {
						return this.localStreams
					}, d.prototype.getRemoteStreams = function() {
						return this.remoteStreams
					}, d.prototype._createTransceiver = function(e, t) {
						var n = this.transceivers.length > 0,
							i = {
								track: null,
								iceGatherer: null,
								iceTransport: null,
								dtlsTransport: null,
								localCapabilities: null,
								remoteCapabilities: null,
								rtpSender: null,
								rtpReceiver: null,
								kind: e,
								mid: null,
								sendEncodingParameters: null,
								recvEncodingParameters: null,
								stream: null,
								associatedRemoteMediaStreams: [],
								wantReceive: !0
							};
						if (this.usingBundle && n) i.iceTransport = this.transceivers[0]
							.iceTransport, i.dtlsTransport = this.transceivers[0]
							.dtlsTransport;
						else {
							var r = this._createIceAndDtlsTransports();
							i.iceTransport = r.iceTransport, i.dtlsTransport = r
								.dtlsTransport
						}
						return t || this.transceivers.push(i), i
					}, d.prototype.addTrack = function(t, n) {
						if (this._isClosed) throw c("InvalidStateError",
							"Attempted to call addTrack on a closed peerconnection."
							);
						var i;
						if (this.transceivers.find((function(e) {
								return e.track === t
							}))) throw c("InvalidAccessError", "Track already exists.");
						for (var r = 0; r < this.transceivers.length; r++) this
							.transceivers[r].track || this.transceivers[r].kind !== t
							.kind || (i = this.transceivers[r]);
						return i || (i = this._createTransceiver(t.kind)), this
							._maybeFireNegotiationNeeded(), -1 === this.localStreams
							.indexOf(n) && this.localStreams.push(n), i.track = t, i
							.stream = n, i.rtpSender = new e.RTCRtpSender(t, i
								.dtlsTransport), i.rtpSender
					}, d.prototype.addStream = function(e) {
						var n = this;
						if (t >= 15025) e.getTracks().forEach((function(t) {
							n.addTrack(t, e)
						}));
						else {
							var i = e.clone();
							e.getTracks().forEach((function(e, t) {
								var n = i.getTracks()[t];
								e.addEventListener("enabled", (function(e) {
									n.enabled = e.enabled
								}))
							})), i.getTracks().forEach((function(e) {
								n.addTrack(e, i)
							}))
						}
					}, d.prototype.removeTrack = function(t) {
						if (this._isClosed) throw c("InvalidStateError",
							"Attempted to call removeTrack on a closed peerconnection."
							);
						if (!(t instanceof e.RTCRtpSender)) throw new TypeError(
							"Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender."
							);
						var n = this.transceivers.find((function(e) {
							return e.rtpSender === t
						}));
						if (!n) throw c("InvalidAccessError",
							"Sender was not created by this connection.");
						var i = n.stream;
						n.rtpSender.stop(), n.rtpSender = null, n.track = null, n.stream =
							null, -1 === this.transceivers.map((function(e) {
								return e.stream
							})).indexOf(i) && this.localStreams.indexOf(i) > -1 && this
							.localStreams.splice(this.localStreams.indexOf(i), 1), this
							._maybeFireNegotiationNeeded()
					}, d.prototype.removeStream = function(e) {
						var t = this;
						e.getTracks().forEach((function(e) {
							var n = t.getSenders().find((function(t) {
								return t.track === e
							}));
							n && t.removeTrack(n)
						}))
					}, d.prototype.getSenders = function() {
						return this.transceivers.filter((function(e) {
							return !!e.rtpSender
						})).map((function(e) {
							return e.rtpSender
						}))
					}, d.prototype.getReceivers = function() {
						return this.transceivers.filter((function(e) {
							return !!e.rtpReceiver
						})).map((function(e) {
							return e.rtpReceiver
						}))
					}, d.prototype._createIceGatherer = function(t, n) {
						var i = this;
						if (n && t > 0) return this.transceivers[0].iceGatherer;
						if (this._iceGatherers.length) return this._iceGatherers.shift();
						var r = new e.RTCIceGatherer({
							iceServers: this._config.iceServers,
							gatherPolicy: this._config.iceTransportPolicy
						});
						return Object.defineProperty(r, "state", {
								value: "new",
								writable: !0
							}), this.transceivers[t].bufferedCandidateEvents = [], this
							.transceivers[t].bufferCandidates = function(e) {
								var n = !e.candidate || 0 === Object.keys(e.candidate)
									.length;
								r.state = n ? "completed" : "gathering", null !== i
									.transceivers[t].bufferedCandidateEvents && i
									.transceivers[t].bufferedCandidateEvents.push(e)
							}, r.addEventListener("localcandidate", this.transceivers[t]
								.bufferCandidates), r
					}, d.prototype._gather = function(t, n) {
						var r = this,
							o = this.transceivers[n].iceGatherer;
						if (!o.onlocalcandidate) {
							var a = this.transceivers[n].bufferedCandidateEvents;
							this.transceivers[n].bufferedCandidateEvents = null, o
								.removeEventListener("localcandidate", this.transceivers[n]
									.bufferCandidates), o.onlocalcandidate = function(e) {
									if (!(r.usingBundle && n > 0)) {
										var a = new Event("icecandidate");
										a.candidate = {
											sdpMid: t,
											sdpMLineIndex: n
										};
										var s = e.candidate,
											c = !s || 0 === Object.keys(s).length;
										if (c) "new" !== o.state && "gathering" !== o
											.state || (o.state = "completed");
										else {
											"new" === o.state && (o.state = "gathering"), s
												.component = 1, s.ufrag = o
												.getLocalParameters().usernameFragment;
											var u = i.writeCandidate(s);
											a.candidate = Object.assign(a.candidate, i
													.parseCandidate(u)), a.candidate
												.candidate = u, a.candidate.toJSON =
												function() {
													return {
														candidate: a.candidate.candidate,
														sdpMid: a.candidate.sdpMid,
														sdpMLineIndex: a.candidate
															.sdpMLineIndex,
														usernameFragment: a.candidate
															.usernameFragment
													}
												}
										}
										var d = i.getMediaSections(r._localDescription.sdp);
										d[a.candidate.sdpMLineIndex] += c ?
											"a=end-of-candidates\r\n" : "a=" + a.candidate
											.candidate + "\r\n", r._localDescription.sdp = i
											.getDescription(r._localDescription.sdp) + d
											.join("");
										var l = r.transceivers.every((function(e) {
											return e.iceGatherer &&
												"completed" === e.iceGatherer
												.state
										}));
										"gathering" !== r.iceGatheringState && (r
												.iceGatheringState = "gathering", r
												._emitGatheringStateChange()), c || r
											._dispatchEvent("icecandidate", a), l && (r
												._dispatchEvent("icecandidate", new Event(
													"icecandidate")), r.iceGatheringState =
												"complete", r._emitGatheringStateChange())
									}
								}, e.setTimeout((function() {
									a.forEach((function(e) {
										o.onlocalcandidate(e)
									}))
								}), 0)
						}
					}, d.prototype._createIceAndDtlsTransports = function() {
						var t = this,
							n = new e.RTCIceTransport(null);
						n.onicestatechange = function() {
							t._updateIceConnectionState(), t._updateConnectionState()
						};
						var i = new e.RTCDtlsTransport(n);
						return i.ondtlsstatechange = function() {
							t._updateConnectionState()
						}, i.onerror = function() {
							Object.defineProperty(i, "state", {
								value: "failed",
								writable: !0
							}), t._updateConnectionState()
						}, {
							iceTransport: n,
							dtlsTransport: i
						}
					}, d.prototype._disposeIceAndDtlsTransports = function(e) {
						var t = this.transceivers[e].iceGatherer;
						t && (delete t.onlocalcandidate, delete this.transceivers[e]
							.iceGatherer);
						var n = this.transceivers[e].iceTransport;
						n && (delete n.onicestatechange, delete this.transceivers[e]
							.iceTransport);
						var i = this.transceivers[e].dtlsTransport;
						i && (delete i.ondtlsstatechange, delete i.onerror, delete this
							.transceivers[e].dtlsTransport)
					}, d.prototype._transceive = function(e, n, r) {
						var a = o(e.localCapabilities, e.remoteCapabilities);
						n && e.rtpSender && (a.encodings = e.sendEncodingParameters, a
								.rtcp = {
									cname: i.localCName,
									compound: e.rtcpParameters.compound
								}, e.recvEncodingParameters.length && (a.rtcp.ssrc = e
									.recvEncodingParameters[0].ssrc), e.rtpSender.send(a)),
							r && e.rtpReceiver && a.codecs.length > 0 && ("video" === e
								.kind && e.recvEncodingParameters && t < 15019 && e
								.recvEncodingParameters.forEach((function(e) {
									delete e.rtx
								})), e.recvEncodingParameters.length ? a.encodings = e
								.recvEncodingParameters : a.encodings = [{}], a.rtcp = {
									compound: e.rtcpParameters.compound
								}, e.rtcpParameters.cname && (a.rtcp.cname = e
									.rtcpParameters.cname), e.sendEncodingParameters
								.length && (a.rtcp.ssrc = e.sendEncodingParameters[0].ssrc),
								e.rtpReceiver.receive(a))
					}, d.prototype.setLocalDescription = function(e) {
						var t, n, r = this;
						if (-1 === ["offer", "answer"].indexOf(e.type)) return Promise
							.reject(c("TypeError", 'Unsupported type "' + e.type + '"'));
						if (!a("setLocalDescription", e.type, r.signalingState) || r
							._isClosed) return Promise.reject(c("InvalidStateError",
							"Can not set local " + e.type + " in state " + r
							.signalingState));
						if ("offer" === e.type) t = i.splitSections(e.sdp), n = t.shift(), t
							.forEach((function(e, t) {
								var n = i.parseRtpParameters(e);
								r.transceivers[t].localCapabilities = n
							})), r.transceivers.forEach((function(e, t) {
								r._gather(e.mid, t)
							}));
						else if ("answer" === e.type) {
							t = i.splitSections(r._remoteDescription.sdp), n = t.shift();
							var s = i.matchPrefix(n, "a=ice-lite").length > 0;
							t.forEach((function(e, t) {
								var a = r.transceivers[t],
									c = a.iceGatherer,
									u = a.iceTransport,
									d = a.dtlsTransport,
									l = a.localCapabilities,
									p = a.remoteCapabilities;
								if (!(i.isRejected(e) && 0 === i.matchPrefix(e,
											"a=bundle-only").length || a
										.rejected)) {
									var f = i.getIceParameters(e, n),
										v = i.getDtlsParameters(e, n);
									s && (v.role = "server"), r.usingBundle &&
										0 !== t || (r._gather(a.mid, t),
											"new" === u.state && u.start(c, f,
												s ? "controlling" : "controlled"
												), "new" === d.state && d.start(
												v));
									var h = o(l, p);
									r._transceive(a, h.codecs.length > 0, !1)
								}
							}))
						}
						return r._localDescription = {
								type: e.type,
								sdp: e.sdp
							}, "offer" === e.type ? r._updateSignalingState(
								"have-local-offer") : r._updateSignalingState("stable"),
							Promise.resolve()
					}, d.prototype.setRemoteDescription = function(r) {
						var d = this;
						if (-1 === ["offer", "answer"].indexOf(r.type)) return Promise
							.reject(c("TypeError", 'Unsupported type "' + r.type + '"'));
						if (!a("setRemoteDescription", r.type, d.signalingState) || d
							._isClosed) return Promise.reject(c("InvalidStateError",
							"Can not set remote " + r.type + " in state " + d
							.signalingState));
						var l = {};
						d.remoteStreams.forEach((function(e) {
							l[e.id] = e
						}));
						var p = [],
							f = i.splitSections(r.sdp),
							v = f.shift(),
							h = i.matchPrefix(v, "a=ice-lite").length > 0,
							m = i.matchPrefix(v, "a=group:BUNDLE ").length > 0;
						d.usingBundle = m;
						var y = i.matchPrefix(v, "a=ice-options:")[0];
						return d.canTrickleIceCandidates = !!y && y.substr(14).split(" ")
							.indexOf("trickle") >= 0, f.forEach((function(a, c) {
								var u = i.splitLines(a),
									f = i.getKind(a),
									y = i.isRejected(a) && 0 === i.matchPrefix(a,
										"a=bundle-only").length,
									g = u[0].substr(2).split(" ")[2],
									R = i.getDirection(a, v),
									_ = i.parseMsid(a),
									w = i.getMid(a) || i.generateIdentifier();
								if (y || "application" === f && ("DTLS/SCTP" ===
										g || "UDP/DTLS/SCTP" === g)) d.transceivers[
									c] = {
									mid: w,
									kind: f,
									protocol: g,
									rejected: !0
								};
								else {
									var D, E, S, L, T, b, O, C, k;
									!y && d.transceivers[c] && d.transceivers[c]
										.rejected && (d.transceivers[c] = d
											._createTransceiver(f, !0));
									var P, I, W = i.parseRtpParameters(a);
									y || (P = i.getIceParameters(a, v), (I = i
												.getDtlsParameters(a, v)).role =
											"client"), O = i
										.parseRtpEncodingParameters(a);
									var M = i.parseRtcpParameters(a),
										N = i.matchPrefix(a, "a=end-of-candidates",
											v).length > 0,
										x = i.matchPrefix(a, "a=candidate:").map((
											function(e) {
												return i.parseCandidate(e)
											})).filter((function(e) {
											return 1 === e.component
										}));
									if (("offer" === r.type || "answer" === r
										.type) && !y && m && c > 0 && d
										.transceivers[c] && (d
											._disposeIceAndDtlsTransports(c), d
											.transceivers[c].iceGatherer = d
											.transceivers[0].iceGatherer, d
											.transceivers[c].iceTransport = d
											.transceivers[0].iceTransport, d
											.transceivers[c].dtlsTransport = d
											.transceivers[0].dtlsTransport, d
											.transceivers[c].rtpSender && d
											.transceivers[c].rtpSender.setTransport(
												d.transceivers[0].dtlsTransport), d
											.transceivers[c].rtpReceiver && d
											.transceivers[c].rtpReceiver
											.setTransport(d.transceivers[0]
												.dtlsTransport)), "offer" !== r
										.type || y) "answer" !== r.type || y || (E =
										(D = d.transceivers[c]).iceGatherer, S =
										D.iceTransport, L = D.dtlsTransport, T =
										D.rtpReceiver, b = D
										.sendEncodingParameters, C = D
										.localCapabilities, d.transceivers[c]
										.recvEncodingParameters = O, d
										.transceivers[c].remoteCapabilities = W,
										d.transceivers[c].rtcpParameters = M, x
										.length && "new" === S.state && (!h && !
											N || m && 0 !== c ? x.forEach((
												function(e) {
													s(D.iceTransport, e)
												})) : S.setRemoteCandidates(x)),
										m && 0 !== c || ("new" === S.state && S
											.start(E, P, "controlling"),
											"new" === L.state && L.start(I)), !
										o(D.localCapabilities, D
											.remoteCapabilities).codecs.filter((
											function(e) {
												return "rtx" === e.name
													.toLowerCase()
											})).length && D
										.sendEncodingParameters[0].rtx &&
										delete D.sendEncodingParameters[0].rtx,
										d._transceive(D, "sendrecv" === R ||
											"recvonly" === R, "sendrecv" ===
											R || "sendonly" === R), !T ||
										"sendrecv" !== R && "sendonly" !== R ?
										delete D.rtpReceiver : (k = T.track, _ ?
											(l[_.stream] || (l[_.stream] = new e
												.MediaStream), n(k, l[_
												.stream]), p.push([k, T, l[_
												.stream]])) : (l.default || (l
												.default = new e.MediaStream
												), n(k, l.default), p.push([
												k, T, l.default
											]))));
									else {
										(D = d.transceivers[c] || d
											._createTransceiver(f)).mid = w, D
											.iceGatherer || (D.iceGatherer = d
												._createIceGatherer(c, m)), x
											.length && "new" === D.iceTransport
											.state && (!N || m && 0 !== c ? x
												.forEach((function(e) {
													s(D.iceTransport, e)
												})) : D.iceTransport
												.setRemoteCandidates(x)), C = e
											.RTCRtpReceiver.getCapabilities(f), t <
											15019 && (C.codecs = C.codecs.filter((
												function(e) {
													return "rtx" !== e.name
												}))), b = D
											.sendEncodingParameters || [{
												ssrc: 1001 * (2 * c + 2)
											}];
										var A, j = !1;
										"sendrecv" === R || "sendonly" === R ? (
												j = !D.rtpReceiver, T = D
												.rtpReceiver || new e
												.RTCRtpReceiver(D.dtlsTransport, f),
												j && (k = T.track, _ && "-" === _
													.stream || (_ ? (l[_.stream] ||
														(l[_.stream] = new e
															.MediaStream, Object
															.defineProperty(l[_
																	.stream],
																"id", {
																	get: function() {
																		return _
																			.stream
																	}
																})), Object
														.defineProperty(k,
														"id", {
															get: function() {
																return _
																	.track
															}
														}), A = l[_.stream]) : (
														l.default || (l
															.default = new e
															.MediaStream), A = l
														.default)), A && (n(k, A), D
														.associatedRemoteMediaStreams
														.push(A)), p.push([k, T, A])
													)) : D.rtpReceiver && D
											.rtpReceiver.track && (D
												.associatedRemoteMediaStreams
												.forEach((function(t) {
													var n = t.getTracks()
														.find((function(e) {
															return e
																.id ===
																D
																.rtpReceiver
																.track
																.id
														}));
													n && function(t, n) {
														n.removeTrack(
															t), n
															.dispatchEvent(
																new e
																.MediaStreamTrackEvent(
																	"removetrack", {
																		track: t
																	}))
													}(n, t)
												})), D
												.associatedRemoteMediaStreams = []),
											D.localCapabilities = C, D
											.remoteCapabilities = W, D.rtpReceiver =
											T, D.rtcpParameters = M, D
											.sendEncodingParameters = b, D
											.recvEncodingParameters = O, d
											._transceive(d.transceivers[c], !1, j)
									}
								}
							})), void 0 === d._dtlsRole && (d._dtlsRole = "offer" === r
								.type ? "active" : "passive"), d._remoteDescription = {
								type: r.type,
								sdp: r.sdp
							}, "offer" === r.type ? d._updateSignalingState(
								"have-remote-offer") : d._updateSignalingState("stable"),
							Object.keys(l).forEach((function(t) {
								var n = l[t];
								if (n.getTracks().length) {
									if (-1 === d.remoteStreams.indexOf(n)) {
										d.remoteStreams.push(n);
										var i = new Event("addstream");
										i.stream = n, e.setTimeout((function() {
											d._dispatchEvent(
												"addstream", i)
										}))
									}
									p.forEach((function(e) {
										var t = e[0],
											i = e[1];
										n.id === e[2].id && u(d, t, i, [
											n
										])
									}))
								}
							})), p.forEach((function(e) {
								e[2] || u(d, e[0], e[1], [])
							})), e.setTimeout((function() {
								d && d.transceivers && d.transceivers.forEach((
									function(e) {
										e.iceTransport && "new" === e
											.iceTransport.state && e
											.iceTransport
											.getRemoteCandidates().length >
											0 && (console.warn(
													"Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"
													), e.iceTransport
												.addRemoteCandidate({}))
									}))
							}), 4e3), Promise.resolve()
					}, d.prototype.close = function() {
						this.transceivers.forEach((function(e) {
							e.iceTransport && e.iceTransport.stop(), e
								.dtlsTransport && e.dtlsTransport.stop(), e
								.rtpSender && e.rtpSender.stop(), e
								.rtpReceiver && e.rtpReceiver.stop()
						})), this._isClosed = !0, this._updateSignalingState("closed")
					}, d.prototype._updateSignalingState = function(e) {
						this.signalingState = e;
						var t = new Event("signalingstatechange");
						this._dispatchEvent("signalingstatechange", t)
					}, d.prototype._maybeFireNegotiationNeeded = function() {
						var t = this;
						"stable" === this.signalingState && !0 !== this.needNegotiation && (
							this.needNegotiation = !0, e.setTimeout((function() {
								if (t.needNegotiation) {
									t.needNegotiation = !1;
									var e = new Event("negotiationneeded");
									t._dispatchEvent("negotiationneeded", e)
								}
							}), 0))
					}, d.prototype._updateIceConnectionState = function() {
						var e, t = {
							new: 0,
							closed: 0,
							checking: 0,
							connected: 0,
							completed: 0,
							disconnected: 0,
							failed: 0
						};
						if (this.transceivers.forEach((function(e) {
								e.iceTransport && !e.rejected && t[e.iceTransport
									.state]++
							})), e = "new", t.failed > 0 ? e = "failed" : t.checking > 0 ?
							e = "checking" : t.disconnected > 0 ? e = "disconnected" : t
							.new > 0 ? e = "new" : t.connected > 0 ? e = "connected" : t
							.completed > 0 && (e = "completed"), e !== this
							.iceConnectionState) {
							this.iceConnectionState = e;
							var n = new Event("iceconnectionstatechange");
							this._dispatchEvent("iceconnectionstatechange", n)
						}
					}, d.prototype._updateConnectionState = function() {
						var e, t = {
							new: 0,
							closed: 0,
							connecting: 0,
							connected: 0,
							completed: 0,
							disconnected: 0,
							failed: 0
						};
						if (this.transceivers.forEach((function(e) {
								e.iceTransport && e.dtlsTransport && !e.rejected &&
									(t[e.iceTransport.state]++, t[e.dtlsTransport
										.state]++)
							})), t.connected += t.completed, e = "new", t.failed > 0 ? e =
							"failed" : t.connecting > 0 ? e = "connecting" : t
							.disconnected > 0 ? e = "disconnected" : t.new > 0 ? e = "new" :
							t.connected > 0 && (e = "connected"), e !== this.connectionState
							) {
							this.connectionState = e;
							var n = new Event("connectionstatechange");
							this._dispatchEvent("connectionstatechange", n)
						}
					}, d.prototype.createOffer = function() {
						var n = this;
						if (n._isClosed) return Promise.reject(c("InvalidStateError",
							"Can not call createOffer after close"));
						var o = n.transceivers.filter((function(e) {
								return "audio" === e.kind
							})).length,
							a = n.transceivers.filter((function(e) {
								return "video" === e.kind
							})).length,
							s = arguments[0];
						if (s) {
							if (s.mandatory || s.optional) throw new TypeError(
								"Legacy mandatory/optional constraints not supported."
								);
							void 0 !== s.offerToReceiveAudio && (o = !0 === s
									.offerToReceiveAudio ? 1 : !1 === s
									.offerToReceiveAudio ? 0 : s.offerToReceiveAudio),
								void 0 !== s.offerToReceiveVideo && (a = !0 === s
									.offerToReceiveVideo ? 1 : !1 === s
									.offerToReceiveVideo ? 0 : s.offerToReceiveVideo)
						}
						for (n.transceivers.forEach((function(e) {
								"audio" === e.kind ? --o < 0 && (e.wantReceive = !
									1) : "video" === e.kind && --a < 0 && (e
										.wantReceive = !1)
							})); o > 0 || a > 0;) o > 0 && (n._createTransceiver("audio"),
							o--), a > 0 && (n._createTransceiver("video"), a--);
						var u = i.writeSessionBoilerplate(n._sdpSessionId, n
							._sdpSessionVersion++);
						n.transceivers.forEach((function(r, o) {
								var a = r.track,
									s = r.kind,
									c = r.mid || i.generateIdentifier();
								r.mid = c, r.iceGatherer || (r.iceGatherer = n
									._createIceGatherer(o, n.usingBundle));
								var u = e.RTCRtpSender.getCapabilities(s);
								t < 15019 && (u.codecs = u.codecs.filter((function(
									e) {
									return "rtx" !== e.name
								}))), u.codecs.forEach((function(e) {
									"H264" === e.name && void 0 === e
										.parameters[
											"level-asymmetry-allowed"
											] && (e.parameters[
											"level-asymmetry-allowed"
											] = "1"), r
										.remoteCapabilities && r
										.remoteCapabilities.codecs && r
										.remoteCapabilities.codecs
										.forEach((function(t) {
											e.name
											.toLowerCase() === t
												.name
												.toLowerCase() &&
												e.clockRate ===
												t.clockRate && (
													e
													.preferredPayloadType =
													t
													.payloadType
													)
										}))
								})), u.headerExtensions.forEach((function(e) {
									(r.remoteCapabilities && r
										.remoteCapabilities
										.headerExtensions || []).forEach
										((function(t) {
											e.uri === t.uri && (
												e.id = t.id)
										}))
								}));
								var d = r.sendEncodingParameters || [{
									ssrc: 1001 * (2 * o + 1)
								}];
								a && t >= 15019 && "video" === s && !d[0].rtx && (d[
										0].rtx = {
										ssrc: d[0].ssrc + 1
									}), r.wantReceive && (r.rtpReceiver = new e
										.RTCRtpReceiver(r.dtlsTransport, s)), r
									.localCapabilities = u, r
									.sendEncodingParameters = d
							})), "max-compat" !== n._config.bundlePolicy && (u +=
								"a=group:BUNDLE " + n.transceivers.map((function(e) {
									return e.mid
								})).join(" ") + "\r\n"), u += "a=ice-options:trickle\r\n", n
							.transceivers.forEach((function(e, t) {
								u += r(e, e.localCapabilities, "offer", e.stream, n
										._dtlsRole), u += "a=rtcp-rsize\r\n", !e
									.iceGatherer || "new" === n.iceGatheringState ||
									0 !== t && n.usingBundle || (e.iceGatherer
										.getLocalCandidates().forEach((function(e) {
											e.component = 1, u += "a=" + i
												.writeCandidate(e) + "\r\n"
										})), "completed" === e.iceGatherer.state &&
										(u += "a=end-of-candidates\r\n"))
							}));
						var d = new e.RTCSessionDescription({
							type: "offer",
							sdp: u
						});
						return Promise.resolve(d)
					}, d.prototype.createAnswer = function() {
						var n = this;
						if (n._isClosed) return Promise.reject(c("InvalidStateError",
							"Can not call createAnswer after close"));
						if ("have-remote-offer" !== n.signalingState &&
							"have-local-pranswer" !== n.signalingState) return Promise
							.reject(c("InvalidStateError",
								"Can not call createAnswer in signalingState " + n
								.signalingState));
						var a = i.writeSessionBoilerplate(n._sdpSessionId, n
							._sdpSessionVersion++);
						n.usingBundle && (a += "a=group:BUNDLE " + n.transceivers.map((
							function(e) {
								return e.mid
							})).join(" ") + "\r\n"), a += "a=ice-options:trickle\r\n";
						var s = i.getMediaSections(n._remoteDescription.sdp).length;
						n.transceivers.forEach((function(e, i) {
							if (!(i + 1 > s)) {
								if (e.rejected) return "application" === e
									.kind ? "DTLS/SCTP" === e.protocol ?
									a +=
									"m=application 0 DTLS/SCTP 5000\r\n" :
									a += "m=application 0 " + e.protocol +
									" webrtc-datachannel\r\n" : "audio" ===
									e.kind ? a +=
									"m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n" :
									"video" === e.kind && (a +=
										"m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"
										), void(a +=
										"c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:" +
										e.mid + "\r\n");
								var c;
								e.stream && ("audio" === e.kind ? c = e.stream
									.getAudioTracks()[0] : "video" === e
									.kind && (c = e.stream.getVideoTracks()[
										0]), c && t >= 15019 && "video" ===
									e.kind && !e.sendEncodingParameters[0]
									.rtx && (e.sendEncodingParameters[0]
										.rtx = {
											ssrc: e.sendEncodingParameters[
												0].ssrc + 1
										}));
								var u = o(e.localCapabilities, e
									.remoteCapabilities);
								!u.codecs.filter((function(e) {
										return "rtx" === e.name
											.toLowerCase()
									})).length && e.sendEncodingParameters[0]
									.rtx && delete e.sendEncodingParameters[0]
									.rtx, a += r(e, u, "answer", e.stream, n
										._dtlsRole), e.rtcpParameters && e
									.rtcpParameters.reducedSize && (a +=
										"a=rtcp-rsize\r\n")
							}
						}));
						var u = new e.RTCSessionDescription({
							type: "answer",
							sdp: a
						});
						return Promise.resolve(u)
					}, d.prototype.addIceCandidate = function(e) {
						var t, n = this;
						return e && void 0 === e.sdpMLineIndex && !e.sdpMid ? Promise
							.reject(new TypeError("sdpMLineIndex or sdpMid required")) :
							new Promise((function(r, o) {
								if (!n._remoteDescription) return o(c(
									"InvalidStateError",
									"Can not add ICE candidate without a remote description"
									));
								if (e && "" !== e.candidate) {
									var a = e.sdpMLineIndex;
									if (e.sdpMid)
										for (var u = 0; u < n.transceivers
											.length; u++)
											if (n.transceivers[u].mid === e
												.sdpMid) {
												a = u;
												break
											} var d = n.transceivers[a];
									if (!d) return o(c("OperationError",
										"Can not add ICE candidate"));
									if (d.rejected) return r();
									var l = Object.keys(e.candidate).length > 0 ? i
										.parseCandidate(e.candidate) : {};
									if ("tcp" === l.protocol && (0 === l.port ||
											9 === l.port)) return r();
									if (l.component && 1 !== l.component)
							return r();
									if ((0 === a || a > 0 && d.iceTransport !== n
											.transceivers[0].iceTransport) && !s(d
											.iceTransport, l)) return o(c(
										"OperationError",
										"Can not add ICE candidate"));
									var p = e.candidate.trim();
									0 === p.indexOf("a=") && (p = p.substr(2)), (t =
											i.getMediaSections(n._remoteDescription
												.sdp))[a] += "a=" + (l.type ? p :
											"end-of-candidates") + "\r\n", n
										._remoteDescription.sdp = i.getDescription(n
											._remoteDescription.sdp) + t.join("")
								} else
									for (var f = 0; f < n.transceivers.length && (n
											.transceivers[f].rejected || (n
												.transceivers[f].iceTransport
												.addRemoteCandidate({}), (t = i
													.getMediaSections(n
														._remoteDescription.sdp))[
												f] += "a=end-of-candidates\r\n", n
												._remoteDescription.sdp = i
												.getDescription(n._remoteDescription
													.sdp) + t.join(""), !n
												.usingBundle)); f++);
								r()
							}))
					}, d.prototype.getStats = function(t) {
						if (t && t instanceof e.MediaStreamTrack) {
							var n = null;
							if (this.transceivers.forEach((function(e) {
									e.rtpSender && e.rtpSender.track === t ? n = e
										.rtpSender : e.rtpReceiver && e.rtpReceiver
										.track === t && (n = e.rtpReceiver)
								})), !n) throw c("InvalidAccessError", "Invalid selector.");
							return n.getStats()
						}
						var i = [];
						return this.transceivers.forEach((function(e) {
							["rtpSender", "rtpReceiver", "iceGatherer",
								"iceTransport", "dtlsTransport"
							].forEach((function(t) {
								e[t] && i.push(e[t].getStats())
							}))
						})), Promise.all(i).then((function(e) {
							var t = new Map;
							return e.forEach((function(e) {
								e.forEach((function(e) {
									t.set(e.id, e)
								}))
							})), t
						}))
					}, ["RTCRtpSender", "RTCRtpReceiver", "RTCIceGatherer",
						"RTCIceTransport", "RTCDtlsTransport"
					].forEach((function(t) {
						var n = e[t];
						if (n && n.prototype && n.prototype.getStats) {
							var i = n.prototype.getStats;
							n.prototype.getStats = function() {
								return i.apply(this).then((function(e) {
									var t = new Map;
									return Object.keys(e).forEach((
										function(n) {
											var i;
											e[n].type = {
													inboundrtp: "inbound-rtp",
													outboundrtp: "outbound-rtp",
													candidatepair: "candidate-pair",
													localcandidate: "local-candidate",
													remotecandidate: "remote-candidate"
												} [(i = e[
														n])
													.type
												] || i.type,
												t.set(n, e[
													n])
										})), t
								}))
							}
						}
					}));
				var l = ["createOffer", "createAnswer"];
				return l.forEach((function(e) {
					var t = d.prototype[e];
					d.prototype[e] = function() {
						var e = arguments;
						return "function" == typeof e[0] || "function" ==
							typeof e[1] ? t.apply(this, [arguments[2]])
							.then((function(t) {
								"function" == typeof e[0] && e[0]
									.apply(null, [t])
							}), (function(t) {
								"function" == typeof e[1] && e[1]
									.apply(null, [t])
							})) : t.apply(this, arguments)
					}
				})), (l = ["setLocalDescription", "setRemoteDescription",
					"addIceCandidate"
				]).forEach((function(e) {
					var t = d.prototype[e];
					d.prototype[e] = function() {
						var e = arguments;
						return "function" == typeof e[1] || "function" ==
							typeof e[2] ? t.apply(this, arguments).then((
								function() {
									"function" == typeof e[1] && e[1]
										.apply(null)
								}), (function(t) {
								"function" == typeof e[2] && e[2]
									.apply(null, [t])
							})) : t.apply(this, arguments)
					}
				})), ["getStats"].forEach((function(e) {
					var t = d.prototype[e];
					d.prototype[e] = function() {
						var e = arguments;
						return "function" == typeof e[1] ? t.apply(this,
							arguments).then((function() {
							"function" == typeof e[1] && e[1]
								.apply(null)
						})) : t.apply(this, arguments)
					}
				})), d
			}
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.AliRTS = void 0, n(59);
			var i = n(24);
			Object.defineProperty(t, "AliRTS", {
				enumerable: !0,
				get: function() {
					return i.AliRTS
				}
			}), window && (window.AliRTS = i.AliRTS)
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.AliRTS = void 0;
			var i = n(25),
				r = n(9),
				o = n(26),
				a = n(2),
				s = function() {
					function e() {}
					return e.createClient = function(e) {
							return new o.RtsClient(e)
						}, e.getMicList = function() {
							var e = this;
							return new Promise((function(t, n) {
								e.deviceManager.getMicList().then((function(e) {
									t(e)
								})).catch((function(e) {
									n(e)
								}))
							}))
						}, e.getCameraList = function() {
							var e = this;
							return new Promise((function(t, n) {
								e.deviceManager.getCameraList().then((function(e) {
									t(e)
								})).catch((function(e) {
									n(e)
								}))
							}))
						}, e.createStream = function(e) {
							return new Promise((function(t, n) {
								var r = new i.LocalStream;
								r.init(e).then((function() {
									t(r)
								})).catch((function(e) {
									n(e)
								}))
							}))
						}, e.deviceManager = new r.BrowserDeviceManager, e.BrowserUtil = a
						.BrowserUtil, e.SystenUtil = a.SystemUtil, e
				}();
			t.AliRTS = s
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
				return (i = Object.setPrototypeOf || {
						__proto__: []
					}
					instanceof Array && function(e, t) {
						e.__proto__ = t
					} || function(e, t) {
						for (var n in t) Object.prototype.hasOwnProperty.call(t,
							n) && (e[n] = t[n])
					})(e, t)
			}, function(e, t) {
				if ("function" != typeof t && null !== t) throw new TypeError(
					"Class extends value " + String(t) +
					" is not a constructor or null");

				function n() {
					this.constructor = e
				}
				i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
					.prototype, new n)
			});
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.LocalStream = void 0;
			var o = n(8),
				a = n(9),
				s = n(5),
				c = n(4),
				u = n(2),
				d = new Map;
			d.set("480p_1", {
				width: 640,
				height: 480,
				frameRate: 5,
				maxBitrate: 300
			}), d.set("480p_2", {
				width: 640,
				height: 480,
				frameRate: 30,
				maxBitrate: 1e3
			}), d.set("720p_1", {
				width: 1280,
				height: 720,
				frameRate: 5,
				maxBitrate: 800
			}), d.set("720p_2", {
				width: 1280,
				height: 720,
				frameRate: 30,
				maxBitrate: 2e3
			}), d.set("1080p_1", {
				width: 1920,
				height: 1080,
				frameRate: 5,
				maxBitrate: 1e3
			}), d.set("1080p_2", {
				width: 1920,
				height: 1080,
				frameRate: 30,
				maxBitrate: 3e3
			});
			var l = new Map;
			l.set("120p_1", {
				width: 160,
				height: 120,
				frameRate: 15,
				maxBitrate: 65
			}), l.set("120p_3", {
				width: 120,
				height: 120,
				frameRate: 15,
				maxBitrate: 50
			}), l.set("180p_1", {
				width: 320,
				height: 180,
				frameRate: 15,
				maxBitrate: 140
			}), l.set("180p_3", {
				width: 180,
				height: 180,
				frameRate: 15,
				maxBitrate: 100
			}), l.set("180p_4", {
				width: 240,
				height: 180,
				frameRate: 15,
				maxBitrate: 120
			}), l.set("240p_1", {
				width: 320,
				height: 240,
				frameRate: 15,
				maxBitrate: 200
			}), l.set("240p_3", {
				width: 240,
				height: 240,
				frameRate: 15,
				maxBitrate: 140
			}), l.set("240p_4", {
				width: 424,
				height: 240,
				frameRate: 15,
				maxBitrate: 220
			}), l.set("360p_1", {
				width: 640,
				height: 360,
				frameRate: 15,
				maxBitrate: 400
			}), l.set("360p_3", {
				width: 360,
				height: 360,
				frameRate: 15,
				maxBitrate: 260
			}), l.set("360p_4", {
				width: 640,
				height: 360,
				frameRate: 30,
				maxBitrate: 600
			}), l.set("360p_6", {
				width: 360,
				height: 360,
				frameRate: 30,
				maxBitrate: 400
			}), l.set("360p_7", {
				width: 480,
				height: 360,
				frameRate: 15,
				maxBitrate: 320
			}), l.set("360p_8", {
				width: 480,
				height: 360,
				frameRate: 30,
				maxBitrate: 490
			}), l.set("360p_9", {
				width: 640,
				height: 360,
				frameRate: 15,
				maxBitrate: 800
			}), l.set("360p_10", {
				width: 640,
				height: 360,
				frameRate: 24,
				maxBitrate: 800
			}), l.set("360p_11", {
				width: 640,
				height: 360,
				frameRate: 24,
				maxBitrate: 1e3
			}), l.set("480p_1", {
				width: 640,
				height: 480,
				frameRate: 15,
				maxBitrate: 500
			}), l.set("480p_2", {
				width: 640,
				height: 480,
				frameRate: 30,
				maxBitrate: 1e3
			}), l.set("480p_3", {
				width: 480,
				height: 480,
				frameRate: 15,
				maxBitrate: 400
			}), l.set("480p_4", {
				width: 640,
				height: 480,
				frameRate: 30,
				maxBitrate: 750
			}), l.set("480p_6", {
				width: 480,
				height: 480,
				frameRate: 30,
				maxBitrate: 600
			}), l.set("480p_8", {
				width: 848,
				height: 480,
				frameRate: 15,
				maxBitrate: 610
			}), l.set("480p_9", {
				width: 848,
				height: 480,
				frameRate: 30,
				maxBitrate: 930
			}), l.set("480p_10", {
				width: 640,
				height: 480,
				frameRate: 10,
				maxBitrate: 400
			}), l.set("720p_1", {
				width: 1280,
				height: 720,
				frameRate: 15,
				maxBitrate: 1130
			}), l.set("720p_2", {
				width: 1280,
				height: 720,
				frameRate: 30,
				maxBitrate: 2e3
			}), l.set("720p_3", {
				width: 1280,
				height: 720,
				frameRate: 30,
				maxBitrate: 1710
			}), l.set("720p_5", {
				width: 960,
				height: 720,
				frameRate: 15,
				maxBitrate: 910
			}), l.set("720p_6", {
				width: 960,
				height: 720,
				frameRate: 30,
				maxBitrate: 1380
			}), l.set("1080p_1", {
				width: 1920,
				height: 1080,
				frameRate: 15,
				maxBitrate: 2080
			}), l.set("1080p_2", {
				width: 1920,
				height: 1080,
				frameRate: 30,
				maxBitrate: 3e3
			}), l.set("1080p_3", {
				width: 1920,
				height: 1080,
				frameRate: 30,
				maxBitrate: 3150
			}), l.set("1080p_5", {
				width: 1920,
				height: 1080,
				frameRate: 60,
				maxBitrate: 4780
			}), l.set("1440p_1", {
				width: 2560,
				height: 1440,
				frameRate: 30,
				maxBitrate: 4850
			}), l.set("1440p_2", {
				width: 2560,
				height: 1440,
				frameRate: 60,
				maxBitrate: 7350
			}), l.set("4K_1", {
				width: 3840,
				height: 2160,
				frameRate: 30,
				maxBitrate: 8910
			}), l.set("4K_3", {
				width: 3840,
				height: 2160,
				frameRate: 60,
				maxBitrate: 13500
			});
			var p = function(e) {
				function t() {
					var t = e.call(this) || this;
					return t.deviceManager = new a.BrowserDeviceManager, t.mediastream =
						new MediaStream, t.hasVideo = !1, t.hasScreen = !1, t.videoProfile =
						"360p_1", t.screenProfile = "720p_1", t
				}
				return r(t, e), Object.defineProperty(t.prototype, "mediaStream", {
					get: function() {
						return this.mediastream
					},
					enumerable: !1,
					configurable: !0
				}), Object.defineProperty(t.prototype, "audioTrack", {
					get: function() {
						return this.audiotrack
					},
					enumerable: !1,
					configurable: !0
				}), Object.defineProperty(t.prototype, "videoTrack", {
					get: function() {
						return this.videotrack
					},
					enumerable: !1,
					configurable: !0
				}), t.prototype.init = function(e) {
					var t = this;
					return new Promise((function(n, i) {
						if (e.audio) {
							var r = {
								deviceId: !0 === e.audio ? "" : String(e
									.audio.deviceId)
							};
							if (t.deviceManager.getAudioTrack(r).then((
									function(i) {
										t.audiotrack = i, t
											.hasVideoTrackReady(e) && (t
												.videotrack && t
												.mediastream.addTrack(t
													.videotrack), t
												.mediastream.addTrack(t
													.audiotrack), t
												.addTrackListener(), n()
												)
									})).catch((function(e) {
									t.videoTrack && (t.videoTrack
										.stop(), t.videotrack =
										void 0), i(new s
										.RtsError(e.code, e
											.reason, ""))
								})), e.video) {
								var o = {};
								!0 === e.video ? o.deviceId = "" : o = e
									.video, t.deviceManager.getVideoTrack(o)
									.then((function(i) {
										t.videotrack = i, t
											.hasAudioTrackReady(
											e) && (t.audiotrack && t
												.mediastream
												.addTrack(t
													.audiotrack), t
												.mediastream
												.addTrack(t
													.videotrack), t
												.hasVideo = !0, t
												.setVideoProfile(t
													.videoProfile),
												t
											.addTrackListener(), n()
												)
									})).catch((function(e) {
										t.audioTrack && (t
											.audioTrack.stop(),
											t.audiotrack =
											void 0), i(new s
											.RtsError(e.code, e
												.reason, ""))
									}))
							} else e.screen && t.deviceManager
								.getScreenTrack({
									video: !0,
									audio: !1
								}).then((function(i) {
									t.videotrack = i
										.getVideoTracks()[0], t
										.hasAudioTrackReady(e) && (t
											.audiotrack && t
											.mediastream.addTrack(t
												.audiotrack), t
											.mediastream.addTrack(t
												.videotrack), t
											.hasScreen = !0, t
											.setScreenProfile(t
												.screenProfile), t
											.addTrackListener(), n()
											)
								})).catch((function(e) {
									t.audioTrack && (t.audioTrack
										.stop(), t.audiotrack =
										void 0), i(new s
										.RtsError(e.code, e
											.reason, ""))
								}))
						} else i(new s.RtsError(c.ErrorCode
							.ERROR_MEDIASTREAMTRACK_AUDIO_NONE,
							"need audio track", ""))
					}))
				}, t.prototype.setEncodeParam = function(e) {
					var t, n;
					this.pc = e;
					for (var i = this.pc.getSenders(), r = 0; r < i.length; ++r)
						if ("video" === (null === (t = i[r].track) || void 0 === t ?
								void 0 : t.kind) && i[r].setParameters) {
							var o = i[r],
								a = void 0;
							if (this.hasVideo ? a = l.get(this.videoProfile) : this
								.hasScreen && (a = d.get(this.screenProfile)), a && o
								.getParameters) {
								var s = o.getParameters(),
									c = null === (n = o.track) || void 0 === n ?
									void 0 : n.getSettings();
								if (s && s.encodings.length)
									for (var p = 0; p < s.encodings.length; ++p) s
										.encodings[p].maxBitrate = 1024 * a.maxBitrate,
										u.BrowserUtil.isSafari && c && (s.encodings[p]
											.maxFramerate = c.frameRate);
								o.setParameters(s).then((function(e) {})).catch((
									function(e) {}))
							}
						}
				}, t.prototype.play = function(e) {
					var t;
					null === (t = this.reporter) || void 0 === t || t.reportPlay(e ? e
						.nodeName : String(e)), e && (this.element = e, this
						.mediastream && (this.element.srcObject = this.mediastream,
							this.element.play()))
				}, t.prototype.setVideoProfile = function(e) {
					var t, n = this;
					null === (t = this.reporter) || void 0 === t || t
						.reportVideoProfile(e);
					var i = l.get(e);
					i && (this.hasVideo && this.videotrack && this.videotrack
						.applyConstraints ? this.videotrack.applyConstraints(i)
						.then((function() {
							n.videoProfile = e, n.pc && n.setEncodeParam(n
								.pc)
						})).catch((function(e) {})) : this.videoProfile = e)
				}, t.prototype.setScreenProfile = function(e) {
					var t, n = this;
					null === (t = this.reporter) || void 0 === t || t
						.reportScreenProfile(e);
					var i = d.get(e);
					i && (this.hasScreen && this.videotrack && this.videotrack
						.applyConstraints ? this.videotrack.applyConstraints(i)
						.then((function() {
							n.screenProfile = e, n.pc && n.setEncodeParam(n
								.pc)
						})).catch((function(e) {})) : this.screenProfile = e)
				}, t.prototype.enableAudio = function() {
					var e;
					return null === (e = this.reporter) || void 0 === e || e
						.reportEnableAudio(), !!this.audiotrack && (this.audiotrack
							.enabled = !0, !0)
				}, t.prototype.disableAudio = function() {
					var e;
					return null === (e = this.reporter) || void 0 === e || e
						.reportDisableAudio(), !!this.audiotrack && (this.audiotrack
							.enabled = !1, !0)
				}, t.prototype.enableVideo = function() {
					var e;
					return null === (e = this.reporter) || void 0 === e || e
						.reportEnableVideo(), !!this.videotrack && (this.videotrack
							.enabled = !0, !0)
				}, t.prototype.disableVideo = function() {
					var e;
					return null === (e = this.reporter) || void 0 === e || e
						.reportDisableVideo(), !!this.videotrack && (this.videotrack
							.enabled = !1, !0)
				}, t.prototype.stop = function() {
					var t;
					e.prototype.stop.call(this), this.hasVideo = !1, this.hasScreen = !
						1, this.audiotrack && (this.audiotrack.stop(), this.audiotrack =
							void 0), this.videotrack && (this.videotrack.stop(), this
							.videotrack = void 0), null === (t = this.reporter) ||
						void 0 === t || t.reportStop(0)
				}, t.prototype.releaseMediaStream = function() {
					var e = this;
					this.mediastream.getTracks().forEach((function(t) {
						t.stop(), e.mediastream.removeTrack(t)
					}))
				}, t.prototype.hasVideoTrackReady = function(e) {
					return !(!e.video && !e.screen || !this.videotrack) || !e.video && !
						e.screen
				}, t.prototype.hasAudioTrackReady = function(e) {
					return !!(!e.audio || e.audio && this.audiotrack)
				}, t.prototype.addTrackListener = function() {
					var e = this;
					this.videotrack && this.videotrack.addEventListener("ended", (
						function() {
							e.hasScreen = !1, e.hasVideo = !1, e.emit(
								"videoTrackEnded")
						})), this.audiotrack && this.audiotrack.addEventListener(
						"ended", (function() {
							e.emit("audioTrackEnded")
						}))
				}, t
			}(o.Stream);
			t.LocalStream = p
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.RtsClient = void 0;
			var a = o(n(1)),
				s = n(27),
				c = n(57),
				u = o(n(58)),
				d = o(n(6)),
				l = n(21),
				p = function(e) {
					function t(t) {
						var n = e.call(this) || this;
						return n.reporter = new u.default(t), n.subscriber = new s.Subscriber(n
								.reporter, t ? t.playConfig : void 0), n.publisher = new c
							.Publisher(n.reporter), n.subscriber.on("onError", (function(e) {
								n.reporter.reportErrorInfo(e.errorCode, e.message, e
									.traceId), n.emit("onError", e)
							})), n.subscriber.on("onPlayEvent", (function(e) {
								n.emit("onPlayEvent", e)
							})), n.reporter.reportCreateClient(), n
					}
					return r(t, e), t.prototype.getVersion = function() {
						return d.default.version
					}, t.prototype.isSupport = function(e) {
						return (new l.SupportUtil).isSupport(e)
					}, t.prototype.subscribe = function(e, t) {
						return this.subscriber.subscribe(e, t)
					}, t.prototype.unsubscribe = function() {
						this.subscriber.unsubscribe()
					}, t.prototype.startLiveStream = function(e, t, n) {
						return this.reporter.reportStartPlay(e), this.subscriber
							.startLiveStream(e, t, n)
					}, t.prototype.stopLiveStream = function() {
						this.reporter.reportStopPlay(), this.subscriber.stopLiveStream()
					}, t.prototype.muteLiveStream = function(e) {
						this.subscriber.muteLiveStream(e)
					}, t.prototype.publish = function(e, t, n) {
						return this.publisher.publish(e, t, n)
					}, t.prototype.unpublish = function() {
						return this.publisher.unpublish()
					}, t.prototype.getTransportStats = function() {
						return this.subscriber.getPeerConnection().getMonitor()
							.getTransportStats()
					}, t.prototype.getRemoteVideoStats = function() {
						return this.subscriber.getPeerConnection().getMonitor()
							.getRemoteVideoStats()
					}, t.prototype.getRemoteAudioStats = function() {
						return this.subscriber.getPeerConnection().getMonitor()
							.getRemoteAudioStats()
					}, t
				}(a.default);
			t.RtsClient = p
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__awaiter || function(e, t, n, i) {
					return new(n || (n = Promise))((function(r, o) {
						function a(e) {
							try {
								c(i.next(e))
							} catch (e) {
								o(e)
							}
						}

						function s(e) {
							try {
								c(i.throw(e))
							} catch (e) {
								o(e)
							}
						}

						function c(e) {
							var t;
							e.done ? r(e.value) : (t = e.value, t instanceof n ? t :
								new n((function(e) {
									e(t)
								}))).then(a, s)
						}
						c((i = i.apply(e, t || [])).next())
					}))
				},
				a = this && this.__generator || function(e, t) {
					var n, i, r, o, a = {
						label: 0,
						sent: function() {
							if (1 & r[0]) throw r[1];
							return r[1]
						},
						trys: [],
						ops: []
					};
					return o = {
						next: s(0),
						throw: s(1),
						return: s(2)
					}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
						return this
					}), o;

					function s(o) {
						return function(s) {
							return function(o) {
								if (n) throw new TypeError(
									"Generator is already executing.");
								for (; a;) try {
									if (n = 1, i && (r = 2 & o[0] ? i.return : o[
											0] ? i.throw || ((r = i.return) && r
												.call(i), 0) : i.next) && !(r = r
											.call(i, o[1])).done) return r;
									switch (i = 0, r && (o = [2 & o[0], r.value]),
										o[0]) {
										case 0:
										case 1:
											r = o;
											break;
										case 4:
											return a.label++, {
												value: o[1],
												done: !1
											};
										case 5:
											a.label++, i = o[1], o = [0];
											continue;
										case 7:
											o = a.ops.pop(), a.trys.pop();
											continue;
										default:
											if (!((r = (r = a.trys).length > 0 && r[
														r.length - 1]) || 6 !== o[
													0] && 2 !== o[0])) {
												a = 0;
												continue
											}
											if (3 === o[0] && (!r || o[1] > r[0] &&
													o[1] < r[3])) {
												a.label = o[1];
												break
											}
											if (6 === o[0] && a.label < r[1]) {
												a.label = r[1], r = o;
												break
											}
											if (r && a.label < r[2]) {
												a.label = r[2], a.ops.push(o);
												break
											}
											r[2] && a.ops.pop(), a.trys.pop();
											continue
									}
									o = t.call(e, a)
								} catch (e) {
									o = [6, e], i = 0
								} finally {
									n = r = 0
								}
								if (5 & o[0]) throw o[1];
								return {
									value: o[0] ? o[1] : void 0,
									done: !0
								}
							}([o, s])
						}
					}
				},
				s = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.Subscriber = void 0;
			var c, u = n(10),
				d = n(4),
				l = s(n(12)),
				p = s(n(1)),
				f = n(5),
				v = n(21),
				h = n(54),
				m = s(n(6)),
				y = n(55),
				g = n(56);
			! function(e) {
				e[e.Init = 0] = "Init", e[e.Requesting = 1] = "Requesting", e[e.Playing = 2] =
					"Playing", e[e.Waiting = 3] = "Waiting"
			}(c || (c = {}));
			var R = function(e) {
				function t(t, n) {
					var i = e.call(this) || this;
					return i.monitorStatsHistory = [], i.playTimeIndex = 0, i
						.playCatonIndex = 0, i.state = c.Init, i.subscribeAudio = !0, i
						.subscribeVideo = !0, i.signalingUrl = "", i.pullStreamUrl = "", i
						.noParsePullStreamUrl = "", i.reporter = t, i.playTimer = 0, i
						.config = n || {
							playTimeOut: 5e3
						}, i.remoteStream = new g.Remotestream, i.remoteStream.on(
							"onAutoPlayError", (function() {
								i.emit("onError", new f.RtsError(d.ErrorCode
									.ERROR_AUTOPLAY_ERROR, "auto play failed",
									""))
							})), i.remoteStream.on("onCanPlay", (function() {
							return o(i, void 0, void 0, (function() {
								var e, t, n, i, r, o;
								return a(this, (function(a) {
									switch (a.label) {
										case 0:
											return e = (
													new Date
													)
												.getTime(),
												[4, this
													.peerconnection
													.sample()
												];
										case 1:
											return a.sent(),
												t = -1,
												n = [],
												i = -1, this
												.monitorStatsHistory &&
												this
												.monitorStatsHistory
												.length && (
													r = this
													.monitorStatsHistory[
														this
														.monitorStatsHistory
														.length -
														1],
													this
													.monitorStatsHistory
													.forEach(
														(function(
															e
															) {
															var t =
																e
																.rtt;
															t && t >
																0 &&
																n
																.push(
																	t
																	)
														})),
													t =
													Number((n
															.reduce(
																(function(
																	e,
																	t
																	) {
																	return e +
																		t
																}),
																0
																) /
															n
															.length
															)
														.toFixed(
															3
															)
														),
													i = r
													.packetsLost,
													this
													.monitorStatsHistory =
													null),
												this
												.stopPlayTimer(),
												this
												.peerconnection
												.playStart(),
												o = this
												._cnend ||
												e, this
												.reporter
												.reportFirstFrameTime(
													this
													.noParsePullStreamUrl,
													this
													.remoteStream
													.traceId,
													this
													._cpend -
													this
													._cpstart,
													this
													._hrend -
													this
													._cpend,
													e - this
													._cpstart,
													0, o -
													this
													._hrend, {
														rttAvg: t,
														packetsLost: i
													}), this
												.emit(
													"onPlayEvent",
													new y
													.PlayEvent(
														y
														.PlayType
														.PLAY_CANPLAY
														)),
												[2]
									}
								}))
							}))
						})), i.peerconnection = new u.RtsPeerconnection, i.peerconnection
						.on("onConnected", (function() {
							i._cnend = (new Date).getTime()
						})), i.peerconnection.on("streamEnded", (function() {
							i.emit("onPlayEvent", new y.PlayEvent(y.PlayType
								.PLAY_ENDED))
						})), i.peerconnection.on("onTrackEvent", (function(e) {
							e.streams && e.streams.length && (i.remoteStream
								.updateMediaStream(e.streams[0]), i
								.onTrackFunction && i.onTrackFunction())
						})), i.mediaObserver = new h.MediaObserver({
							handler: function() {
								i.emit("onPlayEvent", new y.PlayEvent(y.PlayType
									.PLAY_TIMEOUT))
							}
						}), i.peerconnection.on("onMonitorEvent", (function(e) {
							var t, n = e.video,
								r = e.audio;
							n && i.monitorStatsHistory ? i.monitorStatsHistory
							.push({
									rtt: n.transportStats.rtt,
									packetsLost: n.inboundRtpStats.packetsLost
								}) : r && i.monitorStatsHistory && i
								.monitorStatsHistory.push({
									rtt: r.transportStats.rtt,
									packetsLost: r.inboundRtpStats.packetsLost
								}), c.Requesting === i.state ? e.video ? e.video
								.inboundRtpStatsPerSec.framesDecodedPerSecond > 5 &&
								(i.state = c.Playing) : e.audio && e.audio
								.inboundRtpStatsPerSec.bytesReceivedPerSecond > 0 &&
								(i.state = c.Playing) : i.state !== c.Playing && i
								.state !== c.Waiting || (++i.playTimeIndex, e
									.video && (e.video.inboundRtpStatsPerSec
										.framesDecodedPerSecond <= 5 ? (++i
											.playCatonIndex, c.Waiting !== i
											.state && (i.state = c.Waiting, i.emit(
												"onPlayEvent", new y.PlayEvent(y
													.PlayType.PLAY_WAITING)))) : c
										.Waiting === i.state && (i.state = c
											.Playing, i.emit("onPlayEvent", new y
												.PlayEvent(y.PlayType.PLAY_PLAYING))
											)), 30 === i.playTimeIndex && (i
										.reporter.reportCatonTime(1e3 * i
											.playCatonIndex, 1e3 * i.playTimeIndex),
										i.playTimeIndex = 0, i.playCatonIndex = 0));
							var o = new y.PlayEvent(y.PlayType.PLAY_MEDIA);
							if (o.data = {}, e.audio && (o.data.audio = {
									bytesReceivedPerSecond: e.audio
										.inboundRtpStatsPerSec
										.bytesReceivedPerSecond,
									rtt: e.audio.transportStats.rtt
								}), e.video) {
								var a = e.video,
									s = a.inboundRtpStats,
									u = a.inboundRtpStatsPerSec,
									d = a.transportStats;
								o.data.video = {
									bytesReceivedPerSecond: u
										.bytesReceivedPerSecond,
									fps: s.framesPerSecond,
									framesDecodedPerSecond: s.framesPerSecond,
									rtt: d.rtt,
									width: s.frameWidth,
									height: s.frameHeight
								}
							}(o.data.audio || o.data.video) && (i.emit(
								"onPlayEvent", o), null === (t = i
								.mediaObserver) || void 0 === t || t.check(o
								.data))
						})), i.peerconnection.on("canPlay", (function() {
							i.remoteStream.onCanPlay()
						})), i.playTimer = 0, i._cpstart = 0, i._cpend = 0, i._hrend = 0, i
						._cnend = 0, i
				}
				return r(t, e), t.prototype.getPeerConnection = function() {
					return this.peerconnection
				}, t.prototype.subscribe = function(e, t) {
					var n = this;
					return new Promise((function(i, r) {
						return o(n, void 0, void 0, (function() {
							var n, o, s = this;
							return a(this, (function(a) {
								switch (a.label) {
									case 0:
										return this
											.monitorStatsHistory = [],
											this
											.unsubscribe(),
											this
											.state =
											c
											.Requesting,
											this
											.noParsePullStreamUrl =
											e, this
											.parseUrl(
												e),
											null ===
											(o = this
												.mediaObserver
												) ||
											void 0 ===
											o || o
											.updateConfig({
												timeout: null ==
													t ?
													void 0 :
													t
													.mediaTimeout
											}), n =
											null ==
											t ?
											void 0 :
											t
											.signalUrl,
											this
											.signalingUrl =
											n ||
											this
											.signalingUrl,
											this
											.pullStreamUrl ?
											[3, 1] :
											(r(new f.RtsError(
													d
													.ErrorCode
													.ERROR_PLAY_URL,
													"url need artc://",
													""
													)),
												[3,
													8]
												);
									case 1:
										return this
											.subscribeAudio ||
											this
											.subscribeVideo ?
											[3, 2] :
											(r(new f.RtsError(
													d
													.ErrorCode
													.ERROR_SUBSCRIBE_NOTHING,
													"subscribe nothing",
													""
													)),
												[3,
													8]
												);
									case 2:
										if (this
											._cpstart =
											(
												new Date)
											.getTime(),
											!this
											.subscribeVideo
											) return [
											3,
											7
										];
										a.label = 3;
									case 3:
										return a
											.trys
											.push([3,
												5, ,
												6
											]), [4,
												(new v
													.SupportUtil
													)
												.findH264(
													3
													)
											];
									case 4:
									case 5:
										return a
											.sent(),
											[3, 6];
									case 6:
										a.label = 7;
									case 7:
										this.peerconnection
											.createOffer(
												this
												.subscribeAudio,
												this
												.subscribeVideo
												)
											.then((function(
												e
												) {
												s._cpend =
													(
														new Date)
													.getTime(),
													s
													.reporter
													.reportSubscribeStart(
														s
														.noParsePullStreamUrl,
														s
														.signalingUrl
														),
													s
													.excuteSignal(
														e
														)
													.then(
														(function(
															e
															) {
															if (s
																.remoteStream
																.traceId =
																e,
																void 0 ===
																s
																.remoteStream
																.getMediaStream()
																)
																var t =
																	window
																	.setInterval(
																		(function() {
																			null !=
																				s
																				.remoteStream
																				.getMediaStream() &&
																				(clearInterval(
																						t
																						),
																					i(s
																						.remoteStream)
																					)
																		}),
																		100
																		);
															else i(s
																.remoteStream)
														})
														)
													.catch(
														(function(
															e
															) {
															s._hrend =
																(
																	new Date)
																.getTime();
															var t =
																new f
																.RtsError(
																	e
																	.errorCode ?
																	e
																	.errorCode :
																	d
																	.ErrorCode
																	.ERROR_HTTPREQUEST_ERROR,
																	e
																	.message,
																	e ?
																	e
																	.traceid :
																	""
																	);
															r(t),
																s
																.emit(
																	"onError",
																	t
																	)
														})
														)
											}))
											.catch((function(
												e
												) {
												s._cpend =
													(
														new Date)
													.getTime();
												var t =
													new f
													.RtsError(
														d
														.ErrorCode
														.ERROR_CREATEOFFER,
														e
														.message,
														""
														);
												r(t),
													s
													.emit(
														"onError",
														t
														)
											})), a
											.label =
											8;
									case 8:
										return [2]
								}
							}))
						}))
					}))
				}, t.prototype.unsubscribe = function() {
					var e;
					this.stopPlayTimer(), this.peerconnection.dispose(), this
						.remoteStream.stop(), this.subscribeVideo = !0, this
						.subscribeAudio = !0, this.state = c.Init, this.signalingUrl =
						"", this.pullStreamUrl = "", this.noParsePullStreamUrl = "",
						this.onTrackFunction = void 0, this.reporter.updateTid(), this
						.playTimer = 0, this._cpstart = 0, this._cpend = 0, this
						._hrend = 0, this._cnend = 0, this.monitorStatsHistory = [],
						null === (e = this.mediaObserver) || void 0 === e || e.reset()
				}, t.prototype.startLiveStream = function(e, t, n) {
					var i = this;
					return new Promise((function(r, o) {
						i.unsubscribe(), i.state = c.Requesting, i
							.noParsePullStreamUrl = e, i.parseUrl(e);
						var a = null == n ? void 0 : n.signalUrl;
						i.signalingUrl = a || i.signalingUrl, "" === i
							.pullStreamUrl ? o(new f.RtsError(d.ErrorCode
									.ERROR_PLAY_URL, "url need artc://", ""
									)) : i.subscribeAudio || i
							.subscribeVideo ? !t || "AUDIO" !== t
							.nodeName && "VIDEO" !== t.nodeName ? o(new f
								.RtsError(d.ErrorCode
									.ERROR_HTMLELEMENT_ERROR,
									"need htmlaudioelement or htmlvideoelement",
									"")) : (i.subscribeAudio && i
								.subscribeVideo ? "VIDEO" !== t.nodeName &&
								i.emit("onError", new f.RtsError(d.ErrorCode
									.ERROR_HEMLELEMENT_NOTMATCH,
									"need htmlvideoelement", "")) : i
								.subscribeAudio ? "AUDIO" !== t.nodeName &&
								i.emit("onError", new f.RtsError(d.ErrorCode
									.ERROR_HEMLELEMENT_NOTMATCH,
									"need htmlaudioelement", "")) :
								"VIDEO" !== t.nodeName && i.emit("onError",
									new f.RtsError(d.ErrorCode
										.ERROR_HEMLELEMENT_NOTMATCH,
										"need htmlvieoelement", "")), i
								._cpstart = (new Date).getTime(), i.reporter
								.updateTid(), i.peerconnection.createOffer(i
									.subscribeAudio, i.subscribeVideo).then(
									(function(e) {
										i._cpend = (new Date).getTime(),
											i.excuteSignal(e).then((
												function(e) {
													i.remoteStream
														.traceId =
														e, i
														._hrend = (
															new Date
															)
														.getTime(),
														i
														.remoteStream
														.play(t), r(
															e)
												})).catch((function(e) {
												i._hrend = (
														new Date
														)
													.getTime(),
													i.reporter
													.reportFirstFrameTime(
														i
														.noParsePullStreamUrl,
														e ? e
														.traceid :
														"", i
														._cpend -
														i
														._cpstart,
														i
														._hrend -
														i
														._cpend,
														-1, -1,
														i
														._cnend -
														i._hrend
														), o(
														new f
														.RtsError(
															e
															.errorCode ?
															e
															.errorCode :
															d
															.ErrorCode
															.ERROR_HTTPREQUEST_ERROR,
															e
															.message,
															""))
											}))
									})).catch((function(e) {
									i._cpend = (new Date).getTime(),
										i.reporter
										.reportFirstFrameTime(i
											.noParsePullStreamUrl,
											e ? e.traceid : "", i
											._cpend - i._cpstart, -
											1, -1, -1, i._cnend - i
											._hrend), o(new f
											.RtsError(d.ErrorCode
												.ERROR_CREATEOFFER,
												e.message, ""))
								}))) : o(new f.RtsError(d.ErrorCode
								.ERROR_SUBSCRIBE_NOTHING,
								"subscribe nothing", ""))
					}))
				}, t.prototype.stopLiveStream = function() {
					this.unsubscribe()
				}, t.prototype.muteLiveStream = function(e) {
					return this.remoteStream.muted = e, !0
				}, t.prototype.excuteSignal = function(e) {
					var t = this;
					return new Promise((function(n, i) {
						var r = {
							url: t.pullStreamUrl,
							amsid: ["rts audio"],
							vmsid: ["rts video"]
						};
						t.subscribeAudio || delete r.amsid, t
							.subscribeVideo || delete r.vmsid, l.default
							.create({
								baseURL: "",
								timeout: t.config.playTimeOut,
								headers: {
									"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
								}
							}).post(t.signalingUrl, {
								version: m.default.protocol_version,
								sdk_version: m.default.sdk_version,
								mode: "live",
								pull_streams: [r],
								jsep: e
							}).then((function(e) {
								var r, o, a;
								if (e && 200 === e.status) {
									t._hrend = (new Date).getTime();
									var s = null === (r = e.data) ||
										void 0 === r ? void 0 : r
										.trace_id;
									t.reporter.reportSubscribeOk({
											vurl: t
												.noParsePullStreamUrl,
											surl: t
												.signalingUrl,
											traceId: s,
											hrct: t._hrend - t
												._cpend,
											rslt: null === (o =
													e.data) ||
												void 0 === o ?
												void 0 : o.code
										}), t.peerconnection
										.recvAnswer(e.data).then((
											function() {
												n(s)
											})).catch((function(t) {
											t.traceid = e
												.data ? e
												.data
												.trace_id :
												"", i({
													errorCode: d
														.ErrorCode
														.ERROR_ANSWER_ERROR,
													message: t
														.message ?
														t
														.message :
														"set answer error",
													traceid: t
														.traceid
												})
										}))
								} else i({
									message: e ?
										"response status:" +
										e.status :
										"response is null",
									traceid: null === (a =
											null == e ?
											void 0 : e.data
											) || void 0 ===
										a ? void 0 : a
										.trace_id
								})
							})).catch((function(e) {
								i(e)
							}))
					}))
				}, t.prototype.parseUrl = function(e) {
					if (0 === e.indexOf("artc://")) {
						var t = e.indexOf("@");
						if (t > -1) {
							var n = e.substring(t + 1, e.length);
							this.pullStreamUrl = e.substring(0, t);
							for (var i = n.split("&"), r = 0; r < i.length; ++r)
								"subaudio=no" === i[r] && (this.subscribeAudio = !1),
								"subvideo=no" === i[r] && (this.subscribeVideo = !1)
						} else this.pullStreamUrl = e;
						var o = window.location.href.indexOf("file://") > -1 ?
							"http://" : "//";
						this.signalingUrl = this.pullStreamUrl.replace("artc://", o)
					}
				}, t.prototype.startPlayTimer = function() {
					var e = this;
					this.stopPlayTimer(), this.playTimer = window.setTimeout((
				function() {
						e.playTimer = 0, e.reporter.reportFirstFrameTime(e
							.noParsePullStreamUrl, e.remoteStream
							.traceId, e._cpend - e._cpstart, e._hrend -
							e._cpend, (new Date).getTime() - e._cpstart,
							-1, e._cnend - e._hrend), e.emit("onError",
							new f.RtsError(d.ErrorCode
								.ERROR_PLAY_FAILED, "play failed", e
								.remoteStream.traceId))
					}), this.config.playTimeOut)
				}, t.prototype.stopPlayTimer = function() {
					this.playTimer && clearTimeout(this.playTimer), this.playTimer = 0
				}, t
			}(p.default);
			t.Subscriber = R
		}, function(e, t, n) {
			var i = this && this.__spreadArray || function(e, t, n) {
				if (n || 2 === arguments.length)
					for (var i, r = 0, o = t.length; r < o; r++) !i && r in t || (i || (i =
						Array.prototype.slice.call(t, 0, r)), i[r] = t[r]);
				return e.concat(i || Array.prototype.slice.call(t))
			};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.SdpUtil = void 0;
			var r = n(2),
				o = function() {
					this.stramId = "", this.audioTrackId = "", this.videoTrackId = "", this
						.screenTrackId = "", this.customTrackId = ""
				},
				a = function() {
					function e(e) {
						this.sdpLines = new Array, this.localStream = e, this
							.publishStreamInfo = new o
					}
					return Object.defineProperty(e.prototype, "sdp", {
						get: function() {
							return this.sdpLines.join("\r\n")
						},
						enumerable: !1,
						configurable: !0
					}), Object.defineProperty(e.prototype, "videoTrackId", {
						get: function() {
							return this.publishStreamInfo.videoTrackId
						},
						enumerable: !1,
						configurable: !0
					}), Object.defineProperty(e.prototype, "screenTrackId", {
						get: function() {
							return this.publishStreamInfo.videoTrackId
						},
						enumerable: !1,
						configurable: !0
					}), Object.defineProperty(e.prototype, "videoName", {
						get: function() {
							return "rts video"
						},
						enumerable: !1,
						configurable: !0
					}), Object.defineProperty(e.prototype, "screenName", {
						get: function() {
							return "rts screen"
						},
						enumerable: !1,
						configurable: !0
					}), e.prototype.init = function(e) {
						this.sdpLines = e.split("\r\n")
					}, e.prototype.addNack = function() {
						for (var e = 0; e < this.sdpLines.length; ++e)
							if (-1 != this.sdpLines[e].indexOf("opus") && -1 != this
								.sdpLines[e + 1].indexOf("rtcp-fb")) {
								var t = this.sdpLines[e + 1].split(" ");
								2 == t.length && (-1 != this.sdpLines[e + 2].indexOf(
									"rtcp-fb") ? this.sdpLines.splice(e + 3, 0, t[
									0] + " nack") : this.sdpLines.splice(e + 2, 0,
									t[0] + " nack"))
							}
					}, e.prototype.modifyTrackName = function() {
						if (this.localStream) {
							this.publishStreamInfo.stramId = this.localStream.mediaStream
								.id, this.localStream.audioTrack && (this.publishStreamInfo
									.audioTrackId = this.localStream.audioTrack.id), this
								.localStream.videoTrack && (this.publishStreamInfo
									.videoTrackId = this.localStream.videoTrack.id);
							for (var e = !1, t = !1, n = 0; n < this.sdpLines.length; ++n) {
								var i = this.sdpLines[n],
									o = i.indexOf(this.publishStreamInfo.stramId);
								this.publishStreamInfo.stramId && -1 != o && (this.sdpLines[
											n] = this.sdpLines[n].replace(this
											.publishStreamInfo.stramId, "rts"), r
										.BrowserUtil.isFirefox && (e ? this.sdpLines[n] =
											this.sdpLines[n].substring(0, o + 4) + "audio" :
											t && (this.sdpLines[n] = this.sdpLines[n]
												.substring(0, o + 4) + "video"))), this
									.publishStreamInfo.audioTrackId && -1 != i.indexOf(this
										.publishStreamInfo.audioTrackId) ? this.sdpLines[
									n] = this.sdpLines[n].replace(this.publishStreamInfo
										.audioTrackId, "audio") : this.publishStreamInfo
									.videoTrackId && -1 != i.indexOf(this.publishStreamInfo
										.videoTrackId) && (this.sdpLines[n] = this.sdpLines[
										n].replace(this.publishStreamInfo.videoTrackId,
										"video")), -1 != i.indexOf("m=audio") ? (e = !0,
										t = !1) : -1 != i.indexOf("m=video") && (t = !0,
										e = !1), -1 != i.indexOf("a=ssrc") && -1 !== (o = i
										.indexOf("cname:")) && (e ? this.sdpLines[n] = i
										.substr(0, o + 6) + "audio" : t && (this.sdpLines[
											n] = i.substr(0, o + 6) + "video"))
							}
						}
					}, e.prototype.getPublishVideoSdp = function() {
						for (var e = -1, t = -1, n = !1, i = 0; i < this.sdpLines.length; ++
							i) {
							if (n && this.sdpLines[i].indexOf("m=application") > -1) {
								t = i - 1;
								break
							}
							if (this.sdpLines[i].indexOf("m=video") > -1) {
								if (n) {
									t = i - 1;
									break
								}
								e = i
							}
							this.sdpLines[i].indexOf("rts video") > -1 && (n = !0)
						}
						return n ? (-1 === t && (t = this.sdpLines.length - 1), this
							.sdpLines.splice(e, t - e).join("\r\n")) : ""
					}, e.prototype.removeVideoTrack = function(e) {
						for (var t = "rts " + e, n = -1, i = -1, r = !1, o = 0; o < this
							.sdpLines.length; ++o) {
							if (r && this.sdpLines[o].indexOf("m=application") > -1) {
								i = o - 1;
								break
							}
							if (this.sdpLines[o].indexOf("m=video") > -1) {
								if (r) {
									i = o - 1;
									break
								}
								n = o
							}
							this.sdpLines[o].indexOf(t) > -1 && (r = !0)
						}
						return !!r && (-1 === i && (i = this.sdpLines.length - 1), this
							.sdpLines.splice(n, i - n), !0)
					}, e.prototype.ios15PushHack = function() {
						var e = !1,
							t = -1;
						if (this.sdpLines.forEach((function(n, i) {
								n.includes("m=video") && (e = !0), e && -1 === t &&
									n.includes("a=") && (t = i)
							})), -1 !== t) {
							var n = this.getExtmapIds(),
								i = Math.max.apply(Math, n) + 1;
							this.sdpLines.splice(t, 0, "a=extmap:".concat(i,
								" urn:3gpp:video-orientation"))
						}
					}, e.prototype.addSps = function() {
						this.sdpLines = this.sdpLines.map((function(e) {
							return e.includes("a=fmtp:") && e.includes(
									"level-asymmetry-allowed") ? e +=
								";sps-pps-idr-in-keyframe=1" : e
						}))
					}, e.prototype.removeSDES = function() {
						var e = ["urn:ietf:params:rtp-hdrext:sdes:mid",
							"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id",
							"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"
						];
						this.sdpLines = this.sdpLines.filter((function(t) {
							return !e.some((function(e) {
								return t.includes(e)
							}))
						}))
					}, e.prototype.dispose = function() {
						this.localStream && (this.localStream = void 0), this.sdpLines =
							new Array, this.publishStreamInfo = new o
					}, e.prototype.getExtmapIds = function() {
						return this.sdpLines.reduce((function(e, t) {
							if (t.includes("a=extmap")) {
								var n = Number(t.replace("a=extmap:", "").split(
									" ")[0]);
								return i(i([], e, !0), [n], !1)
							}
							return e
						}), []).filter((function(e) {
							return e
						}))
					}, e
				}();
			t.SdpUtil = a
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
					return (i = Object.setPrototypeOf || {
							__proto__: []
						}
						instanceof Array && function(e, t) {
							e.__proto__ = t
						} || function(e, t) {
							for (var n in t) Object.prototype.hasOwnProperty.call(t,
								n) && (e[n] = t[n])
						})(e, t)
				}, function(e, t) {
					if ("function" != typeof t && null !== t) throw new TypeError(
						"Class extends value " + String(t) +
						" is not a constructor or null");

					function n() {
						this.constructor = e
					}
					i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
						.prototype, new n)
				}),
				o = this && this.__awaiter || function(e, t, n, i) {
					return new(n || (n = Promise))((function(r, o) {
						function a(e) {
							try {
								c(i.next(e))
							} catch (e) {
								o(e)
							}
						}

						function s(e) {
							try {
								c(i.throw(e))
							} catch (e) {
								o(e)
							}
						}

						function c(e) {
							var t;
							e.done ? r(e.value) : (t = e.value, t instanceof n ? t :
								new n((function(e) {
									e(t)
								}))).then(a, s)
						}
						c((i = i.apply(e, t || [])).next())
					}))
				},
				a = this && this.__generator || function(e, t) {
					var n, i, r, o, a = {
						label: 0,
						sent: function() {
							if (1 & r[0]) throw r[1];
							return r[1]
						},
						trys: [],
						ops: []
					};
					return o = {
						next: s(0),
						throw: s(1),
						return: s(2)
					}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
						return this
					}), o;

					function s(o) {
						return function(s) {
							return function(o) {
								if (n) throw new TypeError(
									"Generator is already executing.");
								for (; a;) try {
									if (n = 1, i && (r = 2 & o[0] ? i.return : o[
											0] ? i.throw || ((r = i.return) && r
												.call(i), 0) : i.next) && !(r = r
											.call(i, o[1])).done) return r;
									switch (i = 0, r && (o = [2 & o[0], r.value]),
										o[0]) {
										case 0:
										case 1:
											r = o;
											break;
										case 4:
											return a.label++, {
												value: o[1],
												done: !1
											};
										case 5:
											a.label++, i = o[1], o = [0];
											continue;
										case 7:
											o = a.ops.pop(), a.trys.pop();
											continue;
										default:
											if (!((r = (r = a.trys).length > 0 && r[
														r.length - 1]) || 6 !== o[
													0] && 2 !== o[0])) {
												a = 0;
												continue
											}
											if (3 === o[0] && (!r || o[1] > r[0] &&
													o[1] < r[3])) {
												a.label = o[1];
												break
											}
											if (6 === o[0] && a.label < r[1]) {
												a.label = r[1], r = o;
												break
											}
											if (r && a.label < r[2]) {
												a.label = r[2], a.ops.push(o);
												break
											}
											r[2] && a.ops.pop(), a.trys.pop();
											continue
									}
									o = t.call(e, a)
								} catch (e) {
									o = [6, e], i = 0
								} finally {
									n = r = 0
								}
								if (5 & o[0]) throw o[1];
								return {
									value: o[0] ? o[1] : void 0,
									done: !0
								}
							}([o, s])
						}
					}
				},
				s = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.RtpMonitor = void 0;
			var c = n(30),
				u = n(32),
				d = function(e) {
					function t() {
						var t = e.call(this) || this;
						return t.canplay = !1, t.pc = null, t.monitorTimerId = null, t
							.audioReceiverMonitorData = new c.AudioReceiverMonitorData, t
							.videoReceiverMonitorData = new u.VideoReceiverMonitorData, t
							.initEvent(), t
					}
					return r(t, e), t.prototype.start = function(e) {
						this.pc = e;
						for (var t = this.pc.getReceivers(), n = 0; n < t.length; ++n) t[n]
							.track && ("audio" === t[n].track.kind ? this
								.audioReceiverMonitorData.rtpReceiver = t[n] : "video" ===
								t[n].track.kind && (this.videoReceiverMonitorData
									.rtpReceiver = t[n]));
						this.startMonitorTimer(200)
					}, t.prototype.resetTimer = function(e) {
						this.stopMonitorTimer(), this.startMonitorTimer(e)
					}, t.prototype.stop = function() {
						this.canplay = !1, this.stopMonitorTimer(), this
							.audioReceiverMonitorData.dispose(), this
							.videoReceiverMonitorData.dispose()
					}, t.prototype.startMonitorTimer = function(e) {
						var t = this;
						this.monitorTimerId || (this.monitorTimerId = window.setInterval((
							function() {
								t.onMonitorTimer()
							}), e))
					}, t.prototype.stopMonitorTimer = function() {
						this.monitorTimerId && clearInterval(this.monitorTimerId), this
							.monitorTimerId = null
					}, t.prototype.onMonitorTimer = function() {
						return o(this, void 0, void 0, (function() {
							var e;
							return a(this, (function(t) {
								switch (t.label) {
									case 0:
										return [4, this
											.updateMonitorData()
										];
									case 1:
										return t.sent(), e = {},
											this
											.audioReceiverMonitorData
											.isExist && (e.audio =
												this
												.audioReceiverMonitorData
												.monitorData), this
											.videoReceiverMonitorData
											.isExist && (e.video =
												this
												.videoReceiverMonitorData
												.monitorData), this
											.emit("onMonitorEvent",
												e), [2]
								}
							}))
						}))
					}, t.prototype.initEvent = function() {
						var e = this;
						this.audioReceiverMonitorData.on("streamEnded", (function() {
							e.videoReceiverMonitorData.isStreamEnded && e.emit(
								"streamEnded")
						})), this.audioReceiverMonitorData.on("canPlay", (function() {
							e.emitCanPlay()
						})), this.videoReceiverMonitorData.on("streamEnded", (
					function() {
							e.audioReceiverMonitorData.isStreamEnded && e.emit(
								"streamEnded")
						})), this.videoReceiverMonitorData.on("canPlay", (function() {
							e.emitCanPlay()
						}))
					}, t.prototype.updateMonitorData = function() {
						return Promise.all([this.audioReceiverMonitorData.getInfo(), this
							.videoReceiverMonitorData.getInfo()
						])
					}, t.prototype.emitCanPlay = function() {
						this.canplay || (this.canplay = !0, this.emit("canPlay"))
					}, t.prototype.getTransportStats = function() {
						return o(this, void 0, void 0, (function() {
							var e;
							return a(this, (function(t) {
								switch (t.label) {
									case 0:
										return [4, this
											.updateMonitorData()
										];
									case 1:
										return t.sent(), e = {},
											this
											.videoReceiverMonitorData
											.isExist ? e = this
											.videoReceiverMonitorData
											.monitorData
											.transportStats : this
											.audioReceiverMonitorData
											.isExist && (e = this
												.audioReceiverMonitorData
												.monitorData
												.transportStats), [
												2, e
											]
								}
							}))
						}))
					}, t.prototype.getRemoteVideoStats = function() {
						return o(this, void 0, void 0, (function() {
							var e, t;
							return a(this, (function(n) {
								switch (n.label) {
									case 0:
										return [4, this
											.updateMonitorData()
										];
									case 1:
										return n.sent(), e = {},
											this
											.videoReceiverMonitorData
											.isExist && (t = this
												.videoReceiverMonitorData
												.monitorData
												.inboundRtpStats,
												e = {
													timestamp: Math
														.floor(t
															.timestamp ||
															0),
													framesDecodedPerSecond: t
														.framesPerSecond,
													framesDecoded: t
														.framesDecoded,
													frameWidth: t
														.frameWidth,
													frameHeight: t
														.frameHeight,
													bytesReceived: t
														.bytesReceived,
													jitter: t
														.jitter,
													jitterBufferDelayAvg: Number(
															t
															.jitterBufferDelay
															) /
														Number(t
															.jitterBufferEmittedCount
															),
													packetsLost: t
														.packetsLost,
													packetsReceived: t
														.packetsReceived
												}), [2, e]
								}
							}))
						}))
					}, t.prototype.getRemoteAudioStats = function() {
						return o(this, void 0, void 0, (function() {
							var e, t;
							return a(this, (function(n) {
								switch (n.label) {
									case 0:
										return [4, this
											.updateMonitorData()
										];
									case 1:
										return n.sent(), e = {},
											this
											.audioReceiverMonitorData
											.isExist && (t = this
												.audioReceiverMonitorData
												.monitorData
												.inboundRtpStats,
												e = {
													timestamp: Math
														.floor(t
															.timestamp ||
															0),
													bytesReceived: t
														.bytesReceived,
													jitter: t
														.jitter,
													jitterBufferDelayAvg: Number(
															t
															.jitterBufferDelay
															) /
														Number(t
															.jitterBufferEmittedCount
															),
													packetsLost: t
														.packetsLost,
													packetsReceived: t
														.packetsReceived
												}), [2, e]
								}
							}))
						}))
					}, t
				}(s(n(1)).default);
			t.RtpMonitor = d
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
				return (i = Object.setPrototypeOf || {
						__proto__: []
					}
					instanceof Array && function(e, t) {
						e.__proto__ = t
					} || function(e, t) {
						for (var n in t) Object.prototype.hasOwnProperty.call(t,
							n) && (e[n] = t[n])
					})(e, t)
			}, function(e, t) {
				if ("function" != typeof t && null !== t) throw new TypeError(
					"Class extends value " + String(t) +
					" is not a constructor or null");

				function n() {
					this.constructor = e
				}
				i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
					.prototype, new n)
			});
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.AudioReceiverMonitorData = void 0;
			var o = function(e) {
				function t() {
					return e.call(this) || this
				}
				return r(t, e), t
			}(n(11).ReceiverMonitorData);
			t.AudioReceiverMonitorData = o
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.RTCStatsType = void 0;
			var i = function() {
				function e() {}
				return e.CandidatePair = "candidate-pair", e.Certificate = "certificate", e
					.Codec = "codec", e.Csrc = "csrc", e.DataCahnnel = "data-channel", e
					.InboundRtp = "inbound-rtp", e.LocalCandidate = "local-candidate", e
					.OutboundRtp = "outbound-rtp", e.PeerConnection = "peer-connection", e
					.Receiver = "receiver", e.RemoteCandidate = "remote-candidate", e
					.RemoteInboundRtp = "remote-inbound-rtp", e.RemoteOutboundRtp =
					"remote-outbound-rtp", e.Sender = "sender", e.Stream = "stream", e
					.Track = "track", e.Transport = "transport", e.MediaSource =
					"media-source", e
			}();
			t.RTCStatsType = i
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
				return (i = Object.setPrototypeOf || {
						__proto__: []
					}
					instanceof Array && function(e, t) {
						e.__proto__ = t
					} || function(e, t) {
						for (var n in t) Object.prototype.hasOwnProperty.call(t,
							n) && (e[n] = t[n])
					})(e, t)
			}, function(e, t) {
				if ("function" != typeof t && null !== t) throw new TypeError(
					"Class extends value " + String(t) +
					" is not a constructor or null");

				function n() {
					this.constructor = e
				}
				i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
					.prototype, new n)
			});
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.VideoReceiverMonitorData = void 0;
			var o = function(e) {
				function t() {
					return e.call(this) || this
				}
				return r(t, e), t
			}(n(11).ReceiverMonitorData);
			t.VideoReceiverMonitorData = o
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.Datachannel = void 0;
			var i = function() {
				function e(e) {
					this.pc = e, this.messageId = 1, this.dataChannel = this.pc
						.createDataChannel("GRTNDataChannel"), this.dataChannel.onopen =
						function(e) {}, this.dataChannel.onmessage = function(e) {
							e.data
						}, this.dataChannel.onclose = function(e) {}, this.dataChannel
						.onerror = function(e) {}
				}
				return e.prototype.addTrack = function(e, t) {
					return new Promise((function(e, t) {}))
				}, e.prototype.removeTrack = function(e, t) {
					return new Promise((function(e, t) {}))
				}, e.prototype.createPublishPacket = function() {
					var e = {
						type: "pub",
						version: 1,
						msg_id: this.messageId,
						streams: []
					};
					return ++this.messageId, e
				}, e
			}();
			t.Datachannel = i
		}, function(e, t, n) {
			var i = n(0),
				r = n(13),
				o = n(35),
				a = n(19);

			function s(e) {
				var t = new o(e),
					n = r(o.prototype.request, t);
				return i.extend(n, o.prototype, t), i.extend(n, t), n
			}
			var c = s(n(7));
			c.Axios = o, c.create = function(e) {
					return s(a(c.defaults, e))
				}, c.Cancel = n(20), c.CancelToken = n(50), c.isCancel = n(18), c.all =
				function(e) {
					return Promise.all(e)
				}, c.spread = n(51), c.isAxiosError = n(52), e.exports = c, e.exports.default =
				c
		}, function(e, t, n) {
			var i = n(0),
				r = n(14),
				o = n(36),
				a = n(37),
				s = n(19),
				c = n(48),
				u = c.validators;

			function d(e) {
				this.defaults = e, this.interceptors = {
					request: new o,
					response: new o
				}
			}
			d.prototype.request = function(e) {
				"string" == typeof e ? (e = arguments[1] || {}).url = arguments[0] : e =
					e || {}, (e = s(this.defaults, e)).method ? e.method = e.method
					.toLowerCase() : this.defaults.method ? e.method = this.defaults.method
					.toLowerCase() : e.method = "get";
				var t = e.transitional;
				void 0 !== t && c.assertOptions(t, {
					silentJSONParsing: u.transitional(u.boolean, "1.0.0"),
					forcedJSONParsing: u.transitional(u.boolean, "1.0.0"),
					clarifyTimeoutError: u.transitional(u.boolean, "1.0.0")
				}, !1);
				var n = [],
					i = !0;
				this.interceptors.request.forEach((function(t) {
					"function" == typeof t.runWhen && !1 === t.runWhen(e) || (
						i = i && t.synchronous, n.unshift(t.fulfilled, t
							.rejected))
				}));
				var r, o = [];
				if (this.interceptors.response.forEach((function(e) {
						o.push(e.fulfilled, e.rejected)
					})), !i) {
					var d = [a, void 0];
					for (Array.prototype.unshift.apply(d, n), d = d.concat(o), r = Promise
						.resolve(e); d.length;) r = r.then(d.shift(), d.shift());
					return r
				}
				for (var l = e; n.length;) {
					var p = n.shift(),
						f = n.shift();
					try {
						l = p(l)
					} catch (e) {
						f(e);
						break
					}
				}
				try {
					r = a(l)
				} catch (e) {
					return Promise.reject(e)
				}
				for (; o.length;) r = r.then(o.shift(), o.shift());
				return r
			}, d.prototype.getUri = function(e) {
				return e = s(this.defaults, e), r(e.url, e.params, e.paramsSerializer)
					.replace(/^\?/, "")
			}, i.forEach(["delete", "get", "head", "options"], (function(e) {
				d.prototype[e] = function(t, n) {
					return this.request(s(n || {}, {
						method: e,
						url: t,
						data: (n || {}).data
					}))
				}
			})), i.forEach(["post", "put", "patch"], (function(e) {
				d.prototype[e] = function(t, n, i) {
					return this.request(s(i || {}, {
						method: e,
						url: t,
						data: n
					}))
				}
			})), e.exports = d
		}, function(e, t, n) {
			var i = n(0);

			function r() {
				this.handlers = []
			}
			r.prototype.use = function(e, t, n) {
				return this.handlers.push({
					fulfilled: e,
					rejected: t,
					synchronous: !!n && n.synchronous,
					runWhen: n ? n.runWhen : null
				}), this.handlers.length - 1
			}, r.prototype.eject = function(e) {
				this.handlers[e] && (this.handlers[e] = null)
			}, r.prototype.forEach = function(e) {
				i.forEach(this.handlers, (function(t) {
					null !== t && e(t)
				}))
			}, e.exports = r
		}, function(e, t, n) {
			var i = n(0),
				r = n(38),
				o = n(18),
				a = n(7);

			function s(e) {
				e.cancelToken && e.cancelToken.throwIfRequested()
			}
			e.exports = function(e) {
				return s(e), e.headers = e.headers || {}, e.data = r.call(e, e.data, e
					.headers, e.transformRequest), e.headers = i.merge(e.headers
					.common || {}, e.headers[e.method] || {}, e.headers), i.forEach([
					"delete", "get", "head", "post", "put", "patch", "common"
				], (function(t) {
					delete e.headers[t]
				})), (e.adapter || a.adapter)(e).then((function(t) {
					return s(e), t.data = r.call(e, t.data, t.headers, e
						.transformResponse), t
				}), (function(t) {
					return o(t) || (s(e), t && t.response && (t.response.data =
						r.call(e, t.response.data, t.response.headers, e
							.transformResponse))), Promise.reject(t)
				}))
			}
		}, function(e, t, n) {
			var i = n(0),
				r = n(7);
			e.exports = function(e, t, n) {
				var o = this || r;
				return i.forEach(n, (function(n) {
					e = n.call(o, e, t)
				})), e
			}
		}, function(e, t) {
			var n, i, r = e.exports = {};

			function o() {
				throw new Error("setTimeout has not been defined")
			}

			function a() {
				throw new Error("clearTimeout has not been defined")
			}

			function s(e) {
				if (n === setTimeout) return setTimeout(e, 0);
				if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0);
				try {
					return n(e, 0)
				} catch (t) {
					try {
						return n.call(null, e, 0)
					} catch (t) {
						return n.call(this, e, 0)
					}
				}
			}! function() {
				try {
					n = "function" == typeof setTimeout ? setTimeout : o
				} catch (e) {
					n = o
				}
				try {
					i = "function" == typeof clearTimeout ? clearTimeout : a
				} catch (e) {
					i = a
				}
			}();
			var c, u = [],
				d = !1,
				l = -1;

			function p() {
				d && c && (d = !1, c.length ? u = c.concat(u) : l = -1, u.length && f())
			}

			function f() {
				if (!d) {
					var e = s(p);
					d = !0;
					for (var t = u.length; t;) {
						for (c = u, u = []; ++l < t;) c && c[l].run();
						l = -1, t = u.length
					}
					c = null, d = !1,
						function(e) {
							if (i === clearTimeout) return clearTimeout(e);
							if ((i === a || !i) && clearTimeout) return i = clearTimeout,
								clearTimeout(e);
							try {
								i(e)
							} catch (t) {
								try {
									return i.call(null, e)
								} catch (t) {
									return i.call(this, e)
								}
							}
						}(e)
				}
			}

			function v(e, t) {
				this.fun = e, this.array = t
			}

			function h() {}
			r.nextTick = function(e) {
					var t = new Array(arguments.length - 1);
					if (arguments.length > 1)
						for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
					u.push(new v(e, t)), 1 !== u.length || d || s(f)
				}, v.prototype.run = function() {
					this.fun.apply(null, this.array)
				}, r.title = "browser", r.browser = !0, r.env = {}, r.argv = [], r.version = "",
				r.versions = {}, r.on = h, r.addListener = h, r.once = h, r.off = h, r
				.removeListener = h, r.removeAllListeners = h, r.emit = h, r.prependListener =
				h, r.prependOnceListener = h, r.listeners = function(e) {
					return []
				}, r.binding = function(e) {
					throw new Error("process.binding is not supported")
				}, r.cwd = function() {
					return "/"
				}, r.chdir = function(e) {
					throw new Error("process.chdir is not supported")
				}, r.umask = function() {
					return 0
				}
		}, function(e, t, n) {
			var i = n(0);
			e.exports = function(e, t) {
				i.forEach(e, (function(n, i) {
					i !== t && i.toUpperCase() === t.toUpperCase() && (e[t] = n,
						delete e[i])
				}))
			}
		}, function(e, t, n) {
			var i = n(17);
			e.exports = function(e, t, n) {
				var r = n.config.validateStatus;
				n.status && r && !r(n.status) ? t(i("Request failed with status code " + n
					.status, n.config, null, n.request, n)) : e(n)
			}
		}, function(e, t, n) {
			var i = n(0);
			e.exports = i.isStandardBrowserEnv() ? {
				write: function(e, t, n, r, o, a) {
					var s = [];
					s.push(e + "=" + encodeURIComponent(t)), i.isNumber(n) && s.push(
							"expires=" + new Date(n).toGMTString()), i.isString(r) && s
						.push("path=" + r), i.isString(o) && s.push("domain=" + o), !
						0 === a && s.push("secure"), document.cookie = s.join("; ")
				},
				read: function(e) {
					var t = document.cookie.match(new RegExp("(^|;\\s*)(" + e +
						")=([^;]*)"));
					return t ? decodeURIComponent(t[3]) : null
				},
				remove: function(e) {
					this.write(e, "", Date.now() - 864e5)
				}
			} : {
				write: function() {},
				read: function() {
					return null
				},
				remove: function() {}
			}
		}, function(e, t, n) {
			var i = n(44),
				r = n(45);
			e.exports = function(e, t) {
				return e && !i(t) ? r(e, t) : t
			}
		}, function(e, t, n) {
			e.exports = function(e) {
				return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)
			}
		}, function(e, t, n) {
			e.exports = function(e, t) {
				return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e
			}
		}, function(e, t, n) {
			var i = n(0),
				r = ["age", "authorization", "content-length", "content-type", "etag",
					"expires", "from", "host", "if-modified-since", "if-unmodified-since",
					"last-modified", "location", "max-forwards", "proxy-authorization",
					"referer", "retry-after", "user-agent"
				];
			e.exports = function(e) {
				var t, n, o, a = {};
				return e ? (i.forEach(e.split("\n"), (function(e) {
					if (o = e.indexOf(":"), t = i.trim(e.substr(0, o))
						.toLowerCase(), n = i.trim(e.substr(o + 1)), t) {
						if (a[t] && r.indexOf(t) >= 0) return;
						a[t] = "set-cookie" === t ? (a[t] ? a[t] : [])
							.concat([n]) : a[t] ? a[t] + ", " + n : n
					}
				})), a) : a
			}
		}, function(e, t, n) {
			var i = n(0);
			e.exports = i.isStandardBrowserEnv() ? function() {
				var e, t = /(msie|trident)/i.test(navigator.userAgent),
					n = document.createElement("a");

				function r(e) {
					var i = e;
					return t && (n.setAttribute("href", i), i = n.href), n.setAttribute(
						"href", i), {
						href: n.href,
						protocol: n.protocol ? n.protocol.replace(/:$/, "") : "",
						host: n.host,
						search: n.search ? n.search.replace(/^\?/, "") : "",
						hash: n.hash ? n.hash.replace(/^#/, "") : "",
						hostname: n.hostname,
						port: n.port,
						pathname: "/" === n.pathname.charAt(0) ? n.pathname : "/" + n
							.pathname
					}
				}
				return e = r(window.location.href),
					function(t) {
						var n = i.isString(t) ? r(t) : t;
						return n.protocol === e.protocol && n.host === e.host
					}
			}() : function() {
				return !0
			}
		}, function(e, t, n) {
			var i = n(49),
				r = {};
			["object", "boolean", "number", "function", "string", "symbol"].forEach((function(e,
				t) {
				r[e] = function(n) {
					return typeof n === e || "a" + (t < 1 ? "n " : " ") + e
				}
			}));
			var o = {},
				a = i.version.split(".");

			function s(e, t) {
				for (var n = t ? t.split(".") : a, i = e.split("."), r = 0; r < 3; r++) {
					if (n[r] > i[r]) return !0;
					if (n[r] < i[r]) return !1
				}
				return !1
			}
			r.transitional = function(e, t, n) {
				var r = t && s(t);

				function a(e, t) {
					return "[Axios v" + i.version + "] Transitional option '" + e + "'" +
						t + (n ? ". " + n : "")
				}
				return function(n, i, s) {
					if (!1 === e) throw new Error(a(i, " has been removed in " + t));
					return r && !o[i] && (o[i] = !0, console.warn(a(i,
						" has been deprecated since v" + t +
						" and will be removed in the near future"))), !e || e(n, i,
						s)
				}
			}, e.exports = {
				isOlderVersion: s,
				assertOptions: function(e, t, n) {
					if ("object" != typeof e) throw new TypeError(
						"options must be an object");
					for (var i = Object.keys(e), r = i.length; r-- > 0;) {
						var o = i[r],
							a = t[o];
						if (a) {
							var s = e[o],
								c = void 0 === s || a(s, o, e);
							if (!0 !== c) throw new TypeError("option " + o +
								" must be " + c)
						} else if (!0 !== n) throw Error("Unknown option " + o)
					}
				},
				validators: r
			}
		}, function(e) {
			e.exports = JSON.parse(
				'{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"__npminstall_done":true,"_from":"axios@0.21.4","_resolved":"https://registry.npm.alibaba-inc.com/axios/download/axios-0.21.4.tgz"}'
				)
		}, function(e, t, n) {
			var i = n(20);

			function r(e) {
				if ("function" != typeof e) throw new TypeError("executor must be a function.");
				var t;
				this.promise = new Promise((function(e) {
					t = e
				}));
				var n = this;
				e((function(e) {
					n.reason || (n.reason = new i(e), t(n.reason))
				}))
			}
			r.prototype.throwIfRequested = function() {
				if (this.reason) throw this.reason
			}, r.source = function() {
				var e;
				return {
					token: new r((function(t) {
						e = t
					})),
					cancel: e
				}
			}, e.exports = r
		}, function(e, t, n) {
			e.exports = function(e) {
				return function(t) {
					return e.apply(null, t)
				}
			}
		}, function(e, t, n) {
			e.exports = function(e) {
				return "object" == typeof e && !0 === e.isAxiosError
			}
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
					value: !0
				}), t.EN = void 0,
				function(e) {
					e.MESSAGE_NOTSUPPORT_WEBRTC = "not support webrtc", e
						.MESSAGE_BROWSER_NOTSUPPORT = "browser not support", e
						.MESSAGE_BROWSER_VERSIONLOW = "browser version too low", e
						.MESSAGE_NOTSUPPORT_H264 = "not support h264", e.MESSAGE_CREATEOFFER =
						"create offer error"
				}(t.EN || (t.EN = {}))
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.MediaObserver = void 0;
			var i = function() {
				function e(t) {
					this.timeout = t.timeout || e.DEFAULT_TIMEOUT, this.handler = t
						.handler || function() {}, this.watchTimer = null
				}
				return e.prototype.check = function(e) {
					var t = this;
					this.hasNoData(e) ? this.watchTimer || (this.watchTimer =
						setTimeout((function() {
							t.handler()
						}), this.timeout)) : this.watchTimer && (clearTimeout(this
						.watchTimer), this.watchTimer = null)
				}, e.prototype.hasNoData = function(e) {
					return !(e && (e.video ? Number(e.video.bytesReceivedPerSecond) >
						0 : e.audio && Number(e.audio.bytesReceivedPerSecond) >
						0))
				}, e.prototype.updateConfig = function(e) {
					this.timeout = e.timeout || this.timeout, this.handler = e
						.handler || this.handler
				}, e.prototype.reset = function() {
					this.watchTimer && (clearTimeout(this.watchTimer), this.watchTimer =
						null)
				}, e.prototype.dispose = function() {
					this.timeout = e.DEFAULT_TIMEOUT, this.handler = function() {}, this
						.watchTimer && (clearTimeout(this.watchTimer), this.watchTimer =
							null)
				}, e.DEFAULT_TIMEOUT = 5e3, e
			}();
			t.MediaObserver = i
		}, function(e, t, n) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.PlayEvent = t.PlayType = void 0, t.PlayType = {
				PLAY_CANPLAY: "canplay",
				PLAY_WAITING: "waiting",
				PLAY_PLAYING: "playing",
				PLAY_MEDIA: "media",
				PLAY_ENDED: "ended",
				PLAY_TIMEOUT: "timeout"
			};
			var i = function(e) {
				this.event = e
			};
			t.PlayEvent = i
		}, function(e, t, n) {
			var i, r = this && this.__extends || (i = function(e, t) {
				return (i = Object.setPrototypeOf || {
						__proto__: []
					}
					instanceof Array && function(e, t) {
						e.__proto__ = t
					} || function(e, t) {
						for (var n in t) Object.prototype.hasOwnProperty.call(t,
							n) && (e[n] = t[n])
					})(e, t)
			}, function(e, t) {
				if ("function" != typeof t && null !== t) throw new TypeError(
					"Class extends value " + String(t) +
					" is not a constructor or null");

				function n() {
					this.constructor = e
				}
				i(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t
					.prototype, new n)
			});
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.Remotestream = void 0;
			var o = n(8),
				a = n(2),
				s = function(e) {
					function t() {
						var t = e.call(this) || this;
						return t.recvCanPlay = !1, t.onCanPlay = t.onCanPlay.bind(t), t
					}
					return r(t, e), Object.defineProperty(t.prototype, "muted", {
						get: function() {
							return !!this.element && this.element.muted
						},
						set: function(e) {
							this.element && (this.element.muted = e)
						},
						enumerable: !1,
						configurable: !0
					}), t.prototype.updateMediaStream = function(e) {
						this.mediastream = e, this.element && this.play(this.element)
					}, t.prototype.getMediaStream = function() {
						return this.mediastream
					}, t.prototype.play = function(e) {
						e ? (this.element = e, this.element.addEventListener("canplay", this
								.onCanPlay), a.BrowserUtil.isSafari && this.element
							.setAttribute("autoplay", ""), "VIDEO" === this.element
							.nodeName && (this.element.setAttribute("playsinline", ""),
								a.BrowserUtil.isMicroMessenger && (this.element
									.setAttribute("x5-video-player-type", "h5-page"),
									this.element.setAttribute("x5-playsinline", ""), a
									.SystemUtil.isAndroid || a.SystemUtil.isIos && this
									.element.setAttribute("x-webkit-airplay", "allow"))
								), this.mediastream && this.playMediaStream(this
								.mediastream)) : this.release()
					}, t.prototype.stop = function() {
						e.prototype.stop.call(this), this.release()
					}, t.prototype.onCanPlay = function() {
						var e = this;
						this.recvCanPlay || (this.emit("onCanPlay"), this.recvCanPlay = !0,
							this.element && a.BrowserUtil.isMicroMessenger ? window
							.WeixinJSBridge ? window.WeixinJSBridge.invoke(
								"getNetworkType", {}, (function() {
									e.tryToPlay()
								})) : document.addEventListener("WeixinJSBridgeReady", (
								function() {
									window.WeixinJSBridge.invoke(
										"getNetworkType", {}, (function() {
											e.tryToPlay()
										}))
								})) : this.tryToPlay())
					}, t.prototype.release = function() {
						this.element && (this.element.pause(), this.element.srcObject =
								null, this.element.load(), this.element.removeEventListener(
									"canplay", this.onCanPlay)), this.recvCanPlay = !1, this
							.element = void 0, this.mediastream = void 0
					}, t.prototype.playMediaStream = function(e) {
						this.element && ("AUDIO" === this.element.nodeName && e
							.getVideoTracks()[0] && e.removeTrack(e.getVideoTracks()[
							0]), this.element.srcObject = e), this.mediastream = e
					}, t.prototype.tryToPlay = function() {
						var e = this;
						if (this.element) {
							var t = this.element.play();
							void 0 !== t && t.then((function() {})).catch((function(t) {
								e.element && e.element.srcObject && e.emit(
									"onAutoPlayError")
							}))
						}
					}, t
				}(o.Stream);
			t.Remotestream = s
		}, function(e, t, n) {
			var i = this && this.__importDefault || function(e) {
				return e && e.__esModule ? e : {
					default: e
				}
			};
			Object.defineProperty(t, "__esModule", {
				value: !0
			}), t.Publisher = void 0;
			var r = n(10),
				o = i(n(12)),
				a = i(n(6)),
				s = n(4),
				c = n(5),
				u = function() {
					function e(e) {
						this.publishStartTimeStamp = 0, this.reporter = e, this.peerconnection =
							new r.RtsPeerconnection, this.signalingUrl = "", this.publishUrl =
							""
					}
					return e.prototype.publish = function(e, t, n) {
						var i = this;
						return new Promise((function(r, o) {
							if (i.unpublish(), i.publishUrl = e, i
								.checkPublishUrl())
								if (null === t.audioTrack) o(new c.RtsError(s
									.ErrorCode.ERROR_PUBLISH_NOAUDIO,
									"publish need audiotrack", ""));
								else {
									var a = null == n ? void 0 : n.signalUrl;
									i.signalingUrl = a || i.signalingUrl, i
										.publishStartTimeStamp = (new Date)
										.getTime(), t.setReporter(i.reporter), i
										.peerconnection.createOffer(!0, !0, t)
										.then((function(e) {
											var t = (new Date)
										.getTime();
											i.excuteSignal(e).then((
												function(e) {
													var n = (
															new Date
															)
														.getTime();
													i.peerconnection
														.recvAnswer(
															e
															.data
															)
														.then((function() {
															i.reporter
																.reportStartPublish(
																	i
																	.publishUrl,
																	i
																	.signalingUrl,
																	t -
																	i
																	.publishStartTimeStamp,
																	n -
																	t,
																	(
																		new Date)
																	.getTime() -
																	n,
																	e
																	.data
																	.trace_id
																	),
																r(e.data
																	.trace_id
																	)
														}))
														.catch((function(
															r
															) {
															r.traceid =
																e
																.data ?
																e
																.data
																.trace_id :
																"",
																i
																.reporter
																.reportStartPublish(
																	i
																	.publishUrl,
																	i
																	.signalingUrl,
																	t -
																	i
																	.publishStartTimeStamp,
																	n -
																	t,
																	-
																	1,
																	r
																	.traceid
																	),
																o(new c
																	.RtsError(
																		s
																		.ErrorCode
																		.ERROR_ANSWER_ERROR,
																		r
																		.message ?
																		r
																		.message :
																		"set answer error",
																		r
																		.traceid
																		)
																	)
														}))
												})).catch((function(
												e) {
												i.reporter
													.reportStartPublish(
														i
														.publishUrl,
														i
														.signalingUrl,
														t -
														i
														.publishStartTimeStamp,
														-1,
														-1,
														e ?
														e
														.traceid :
														""),
													o(new c
														.RtsError(
															e
															.errorCode ?
															e
															.errorCode :
															s
															.ErrorCode
															.ERROR_HTTPREQUEST_ERROR,
															e
															.message,
															""
															)
														)
											}))
										})).catch((function(e) {
											i.reporter
												.reportStartPublish(i
													.publishUrl, i
													.signalingUrl, -1, -
													1, -1, ""), o(new c
													.RtsError(s
														.ErrorCode
														.ERROR_CREATEOFFER,
														e.message, ""))
										}))
								}
							else o(new c.RtsError(s.ErrorCode.ERROR_PUBLISH_URL,
								"url need artc://", ""))
						}))
					}, e.prototype.unpublish = function() {
						this.peerconnection.dispose(), this.reporter.reportStopPublish(),
							this.reporter.updateTid(), this.signalingUrl = "", this
							.publishUrl = ""
					}, e.prototype.replaceTrack = function(e, t) {
						return this.peerconnection.replaceTrack(this.publishUrl, e, t)
					}, e.prototype.excuteSignal = function(e) {
						var t = this;
						return new Promise((function(n, i) {
							o.default.create({
								baseURL: "",
								timeout: 5e3,
								headers: {
									"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
								}
							}).post(t.signalingUrl, {
								version: a.default.protocol_version,
								sdk_version: a.default.sdk_version,
								mode: "rtc",
								push_stream: t.publishUrl,
								jsep: e
							}).then((function(e) {
								e && 200 === e.status ? n(e) : i({
									errorCode: s.ErrorCode
										.ERROR_SIGNAL_ERROR,
									message: e ?
										"response status:" +
										e.status :
										"response is null"
								})
							})).catch((function(e) {
								i(e)
							}))
						}))
					}, e.prototype.checkPublishUrl = function() {
						if (!this.publishUrl) return !1;
						if (0 !== this.publishUrl.indexOf("artc://")) return !1;
						var e = window.location.href.indexOf("file://") > -1 ? "http://" :
							"//";
						return this.signalingUrl = this.publishUrl.replace("artc://", e), !0
					}, e
				}();
			t.Publisher = u
		}, function(e, t, n) {
			var i = this && this.__assign || function() {
					return (i = Object.assign || function(e) {
						for (var t, n = 1, i = arguments.length; n < i; n++)
							for (var r in t = arguments[n]) Object.prototype
								.hasOwnProperty.call(t, r) && (e[r] = t[r]);
						return e
					}).apply(this, arguments)
				},
				r = this && this.__importDefault || function(e) {
					return e && e.__esModule ? e : {
						default: e
					}
				};
			Object.defineProperty(t, "__esModule", {
				value: !0
			});
			var o = n(2),
				a = r(n(6)),
				s = function() {
					function e(e) {
						this.customReporter = null == e ? void 0 : e.customReporter, this.ct =
							e && e.customTag ? e.customTag : "", this.enableLog = !e || 0 != e
							.trackLog, this._initParam(), (o.BrowserUtil.isUnknown || o
								.SystemUtil.isUnknown) && this.reportUA(navigator ? navigator
								.userAgent : "no navigator")
					}
					return e.prototype.updateTid = function() {
						this.param ? this.param.tid = o.Guid.create(32) : this._initParam()
					}, e.prototype.reportUA = function(e) {
						this.reporter({
							msgid: 101,
							args: JSON.stringify({
								ua: e
							})
						})
					}, e.prototype.reportCatonTime = function(e, t) {
						this.reporter({
							msgid: 107,
							args: JSON.stringify({
								ct: e,
								tt: t
							})
						})
					}, e.prototype.reportStartPlay = function(e) {
						this.reporter({
							msgid: 120,
							args: JSON.stringify({
								vurl: encodeURIComponent(e)
							})
						})
					}, e.prototype.reportStopPlay = function() {
						this.reporter({
							msgid: 121
						})
					}, e.prototype.reportSubscribeStart = function(e, t) {
						this.reporter({
							msgid: 125,
							args: JSON.stringify({
								vurl: encodeURIComponent(e),
								surl: encodeURIComponent(t)
							})
						})
					}, e.prototype.reportSubscribeOk = function(e) {
						void 0 === e && (e = {}), this.reporter({
							msgid: 126,
							args: JSON.stringify({
								vurl: encodeURIComponent(e.vurl || ""),
								surl: encodeURIComponent(e.surl || ""),
								hrct: e.hrct,
								tcid: e.traceId,
								rslt: e.rslt
							})
						})
					}, e.prototype.reportFirstFrameTime = function(e, t, n, i, r, o, a, s) {
						this.reporter({
							msgid: 137,
							args: JSON.stringify({
								vurl: encodeURIComponent(e),
								cpct: n,
								hrct: i,
								tcid: t,
								ffct: r,
								rslt: o,
								cnct: a,
								stats: s
							})
						})
					}, e.prototype.reportErrorInfo = function(e, t, n) {
						this.reporter({
							msgid: 150,
							args: JSON.stringify({
								errorCode: e,
								message: t,
								tcid: n
							})
						})
					}, e.prototype.reportCreateClient = function() {
						this.reporter({
							msgid: 200
						})
					}, e.prototype.reportStartPublish = function(e, t, n, i, r, o) {
						this.reporter({
							msgid: 220,
							args: JSON.stringify({
								purl: encodeURIComponent(e),
								surl: encodeURIComponent(t),
								coct: n,
								hrct: i,
								act: r,
								tcid: o
							})
						})
					}, e.prototype.reportStopPublish = function() {
						this.reporter({
							msgid: 221
						})
					}, e.prototype.reportVideoProfile = function(e) {
						this.reporter({
							msgid: 230,
							args: JSON.stringify({
								vp: e
							})
						})
					}, e.prototype.reportScreenProfile = function(e) {
						this.reporter({
							msgid: 231,
							args: JSON.stringify({
								sp: e
							})
						})
					}, e.prototype.reportEnableAudio = function() {
						this.reporter({
							msgid: 232
						})
					}, e.prototype.reportDisableAudio = function() {
						this.reporter({
							msgid: 233
						})
					}, e.prototype.reportEnableVideo = function() {
						this.reporter({
							msgid: 234
						})
					}, e.prototype.reportDisableVideo = function() {
						this.reporter({
							msgid: 235
						})
					}, e.prototype.reportStop = function(e) {
						this.reporter({
							msgid: 236,
							args: JSON.stringify({
								tp: e
							})
						})
					}, e.prototype.reportPlay = function(e) {
						this.reporter({
							msgid: 237,
							args: JSON.stringify({
								tp: e
							})
						})
					}, e.prototype._initParam = function() {
						this.param || (this.param = {
							APIVersion: "0.6.0",
							os: o.SystemUtil.platform,
							osv: o.SystemUtil.systemVersion,
							bt: o.BrowserUtil.browserName,
							bv: o.BrowserUtil.browserVersion,
							host: window.location.origin,
							uid: o.LocalStorage.uuid,
							tid: o.Guid.create(32),
							ver: a.default.version,
							ct: this.ct,
							dt: "",
							lv: "1.0.0"
						})
					}, e.prototype.reporter = function(e) {
						if (this.customReporter && "function" == typeof this
							.customReporter) {
							var t = i(i(i({}, this.param || {}), {
								tm: (new Date).getTime()
							}), e || {});
							try {
								this.customReporter(t)
							} catch (e) {
								console.error("[Error in customReporter] ", e)
							}
						}
						this.enableLog && (t = i(i(i({}, this.param || {}), {
							tm: (new Date).getTime()
						}), e || {}), document.createElement("img").src = "".concat(
							"https://videocloud.cn-hangzhou.log.aliyuncs.com/logstores/live-client-log/track",
							"?").concat(this.data2String(t)))
					}, e.prototype.data2String = function(e) {
						var t = "";
						for (var n in e) e.hasOwnProperty(n) && (t.length && (t += "&"),
							t += n + "=" + e[n]);
						return t
					}, e
				}();
			t.default = s
		}, function(e, t, n) {
			n.r(t);
			var i = {};
			n.r(i), n.d(i, "shimGetUserMedia", (function() {
				return _
			})), n.d(i, "shimGetDisplayMedia", (function() {
				return w
			})), n.d(i, "shimMediaStream", (function() {
				return D
			})), n.d(i, "shimOnTrack", (function() {
				return E
			})), n.d(i, "shimGetSendersWithDtmf", (function() {
				return S
			})), n.d(i, "shimGetStats", (function() {
				return L
			})), n.d(i, "shimSenderReceiverGetStats", (function() {
				return T
			})), n.d(i, "shimAddTrackRemoveTrackWithNative", (function() {
				return b
			})), n.d(i, "shimAddTrackRemoveTrack", (function() {
				return O
			})), n.d(i, "shimPeerConnection", (function() {
				return C
			})), n.d(i, "fixNegotiationNeeded", (function() {
				return k
			}));
			var r = {};
			n.r(r), n.d(r, "shimGetUserMedia", (function() {
				return W
			})), n.d(r, "shimGetDisplayMedia", (function() {
				return M
			})), n.d(r, "shimPeerConnection", (function() {
				return N
			})), n.d(r, "shimReplaceTrack", (function() {
				return x
			}));
			var o = {};
			n.r(o), n.d(o, "shimGetUserMedia", (function() {
				return A
			})), n.d(o, "shimGetDisplayMedia", (function() {
				return j
			})), n.d(o, "shimOnTrack", (function() {
				return U
			})), n.d(o, "shimPeerConnection", (function() {
				return V
			})), n.d(o, "shimSenderGetStats", (function() {
				return B
			})), n.d(o, "shimReceiverGetStats", (function() {
				return F
			})), n.d(o, "shimRemoveStream", (function() {
				return H
			})), n.d(o, "shimRTCDataChannel", (function() {
				return G
			})), n.d(o, "shimAddTransceiver", (function() {
				return q
			})), n.d(o, "shimGetParameters", (function() {
				return J
			})), n.d(o, "shimCreateOffer", (function() {
				return Q
			})), n.d(o, "shimCreateAnswer", (function() {
				return z
			}));
			var a = {};
			n.r(a), n.d(a, "shimLocalStreamsAPI", (function() {
				return $
			})), n.d(a, "shimRemoteStreamsAPI", (function() {
				return K
			})), n.d(a, "shimCallbacksAPI", (function() {
				return X
			})), n.d(a, "shimGetUserMedia", (function() {
				return Y
			})), n.d(a, "shimConstraints", (function() {
				return Z
			})), n.d(a, "shimRTCIceServerUrls", (function() {
				return ee
			})), n.d(a, "shimTrackEventTransceiver", (function() {
				return te
			})), n.d(a, "shimCreateOfferLegacy", (function() {
				return ne
			})), n.d(a, "shimAudioContext", (function() {
				return ie
			}));
			var s = {};
			n.r(s), n.d(s, "shimRTCIceCandidate", (function() {
				return ae
			})), n.d(s, "shimMaxMessageSize", (function() {
				return se
			})), n.d(s, "shimSendThrowTypeError", (function() {
				return ce
			})), n.d(s, "shimConnectionState", (function() {
				return ue
			})), n.d(s, "removeExtmapAllowMixed", (function() {
				return de
			})), n.d(s, "shimAddIceCandidateNullOrEmpty", (function() {
				return le
			}));
			let c = !0,
				u = !0;

			function d(e, t, n) {
				const i = e.match(t);
				return i && i.length >= n && parseInt(i[n], 10)
			}

			function l(e, t, n) {
				if (!e.RTCPeerConnection) return;
				const i = e.RTCPeerConnection.prototype,
					r = i.addEventListener;
				i.addEventListener = function(e, i) {
					if (e !== t) return r.apply(this, arguments);
					const o = e => {
						const t = n(e);
						t && (i.handleEvent ? i.handleEvent(t) : i(t))
					};
					return this._eventMap = this._eventMap || {}, this._eventMap[t] || (this
						._eventMap[t] = new Map), this._eventMap[t].set(i, o), r.apply(
						this, [e, o])
				};
				const o = i.removeEventListener;
				i.removeEventListener = function(e, n) {
					if (e !== t || !this._eventMap || !this._eventMap[t]) return o.apply(
						this, arguments);
					if (!this._eventMap[t].has(n)) return o.apply(this, arguments);
					const i = this._eventMap[t].get(n);
					return this._eventMap[t].delete(n), 0 === this._eventMap[t].size &&
						delete this._eventMap[t], 0 === Object.keys(this._eventMap)
						.length && delete this._eventMap, o.apply(this, [e, i])
				}, Object.defineProperty(i, "on" + t, {
					get() {
						return this["_on" + t]
					},
					set(e) {
						this["_on" + t] && (this.removeEventListener(t, this["_on" +
								t]), delete this["_on" + t]), e && this
							.addEventListener(t, this["_on" + t] = e)
					},
					enumerable: !0,
					configurable: !0
				})
			}

			function p(e) {
				return "boolean" != typeof e ? new Error("Argument type: " + typeof e +
					". Please use a boolean.") : (c = e, e ? "adapter.js logging disabled" :
					"adapter.js logging enabled")
			}

			function f(e) {
				return "boolean" != typeof e ? new Error("Argument type: " + typeof e +
					". Please use a boolean.") : (u = !e,
					"adapter.js deprecation warnings " + (e ? "disabled" : "enabled"))
			}

			function v() {
				if ("object" == typeof window) {
					if (c) return;
					"undefined" != typeof console && "function" == typeof console.log && console
						.log.apply(console, arguments)
				}
			}

			function h(e, t) {
				u && console.warn(e + " is deprecated, please use " + t + " instead.")
			}

			function m(e) {
				return "[object Object]" === Object.prototype.toString.call(e)
			}

			function y(e) {
				return m(e) ? Object.keys(e).reduce((function(t, n) {
					const i = m(e[n]),
						r = i ? y(e[n]) : e[n],
						o = i && !Object.keys(r).length;
					return void 0 === r || o ? t : Object.assign(t, {
						[n]: r
					})
				}), {}) : e
			}

			function g(e, t, n) {
				const i = n ? "outbound-rtp" : "inbound-rtp",
					r = new Map;
				if (null === t) return r;
				const o = [];
				return e.forEach((e => {
					"track" === e.type && e.trackIdentifier === t.id && o.push(e)
				})), o.forEach((t => {
					e.forEach((n => {
						n.type === i && n.trackId === t.id &&
							function e(t, n, i) {
								n && !i.has(n.id) && (i.set(n.id, n),
									Object.keys(n).forEach((r => {
										r.endsWith("Id") ?
											e(t, t.get(n[
												r]), i) : r
											.endsWith(
											"Ids") && n[r]
											.forEach((n => {
												e(t, t.get(
														n),
													i
													)
											}))
									})))
							}(e, n, r)
					}))
				})), r
			}
			const R = v;

			function _(e, t) {
				const n = e && e.navigator;
				if (!n.mediaDevices) return;
				const i = function(e) {
						if ("object" != typeof e || e.mandatory || e.optional) return e;
						const t = {};
						return Object.keys(e).forEach((n => {
							if ("require" === n || "advanced" === n ||
								"mediaSource" === n) return;
							const i = "object" == typeof e[n] ? e[n] : {
								ideal: e[n]
							};
							void 0 !== i.exact && "number" == typeof i.exact && (i
								.min = i.max = i.exact);
							const r = function(e, t) {
								return e ? e + t.charAt(0).toUpperCase() + t
									.slice(1) : "deviceId" === t ? "sourceId" :
									t
							};
							if (void 0 !== i.ideal) {
								t.optional = t.optional || [];
								let e = {};
								"number" == typeof i.ideal ? (e[r("min", n)] = i
									.ideal, t.optional.push(e), e = {}, e[r(
										"max", n)] = i.ideal, t.optional.push(e)
									) : (e[r("", n)] = i.ideal, t.optional.push(
									e))
							}
							void 0 !== i.exact && "number" != typeof i.exact ? (t
								.mandatory = t.mandatory || {}, t.mandatory[r(
									"", n)] = i.exact) : ["min", "max"].forEach(
								(e => {
									void 0 !== i[e] && (t.mandatory = t
										.mandatory || {}, t.mandatory[r(
											e, n)] = i[e])
								}))
						})), e.advanced && (t.optional = (t.optional || []).concat(e
							.advanced)), t
					},
					r = function(e, r) {
						if (t.version >= 61) return r(e);
						if ((e = JSON.parse(JSON.stringify(e))) && "object" == typeof e.audio) {
							const t = function(e, t, n) {
								t in e && !(n in e) && (e[n] = e[t], delete e[t])
							};
							t((e = JSON.parse(JSON.stringify(e))).audio, "autoGainControl",
								"googAutoGainControl"), t(e.audio, "noiseSuppression",
								"googNoiseSuppression"), e.audio = i(e.audio)
						}
						if (e && "object" == typeof e.video) {
							let o = e.video.facingMode;
							o = o && ("object" == typeof o ? o : {
								ideal: o
							});
							const a = t.version < 66;
							if (o && ("user" === o.exact || "environment" === o.exact ||
									"user" === o.ideal || "environment" === o.ideal) && (!n
									.mediaDevices.getSupportedConstraints || !n.mediaDevices
									.getSupportedConstraints().facingMode || a)) {
								let t;
								if (delete e.video.facingMode, "environment" === o.exact ||
									"environment" === o.ideal ? t = ["back", "rear"] :
									"user" !== o.exact && "user" !== o.ideal || (t = ["front"]),
									t) return n.mediaDevices.enumerateDevices().then((n => {
									let a = (n = n.filter((e => "videoinput" ===
										e.kind))).find((e => t.some((t => e
										.label.toLowerCase()
										.includes(t)))));
									return !a && n.length && t.includes(
										"back") && (a = n[n.length - 1]), a && (
											e.video.deviceId = o.exact ? {
												exact: a.deviceId
											} : {
												ideal: a.deviceId
											}), e.video = i(e.video), R(
											"chrome: " + JSON.stringify(e)), r(
											e)
								}))
							}
							e.video = i(e.video)
						}
						return R("chrome: " + JSON.stringify(e)), r(e)
					},
					o = function(e) {
						return t.version >= 64 ? e : {
							name: {
								PermissionDeniedError: "NotAllowedError",
								PermissionDismissedError: "NotAllowedError",
								InvalidStateError: "NotAllowedError",
								DevicesNotFoundError: "NotFoundError",
								ConstraintNotSatisfiedError: "OverconstrainedError",
								TrackStartError: "NotReadableError",
								MediaDeviceFailedDueToShutdown: "NotAllowedError",
								MediaDeviceKillSwitchOn: "NotAllowedError",
								TabCaptureError: "AbortError",
								ScreenCaptureError: "AbortError",
								DeviceCaptureError: "AbortError"
							} [e.name] || e.name,
							message: e.message,
							constraint: e.constraint || e.constraintName,
							toString() {
								return this.name + (this.message && ": ") + this.message
							}
						}
					};
				if (n.getUserMedia = function(e, t, i) {
						r(e, (e => {
							n.webkitGetUserMedia(e, t, (e => {
								i && i(o(e))
							}))
						}))
					}.bind(n), n.mediaDevices.getUserMedia) {
					const e = n.mediaDevices.getUserMedia.bind(n.mediaDevices);
					n.mediaDevices.getUserMedia = function(t) {
						return r(t, (t => e(t).then((e => {
							if (t.audio && !e.getAudioTracks().length ||
								t.video && !e.getVideoTracks().length)
								throw e.getTracks().forEach((e => {
									e.stop()
								})), new DOMException("",
									"NotFoundError");
							return e
						}), (e => Promise.reject(o(e))))))
					}
				}
			}

			function w(e, t) {
				e.navigator.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || e
					.navigator.mediaDevices && ("function" == typeof t ? e.navigator
						.mediaDevices.getDisplayMedia = function(n) {
							return t(n).then((t => {
								const i = n.video && n.video.width,
									r = n.video && n.video.height,
									o = n.video && n.video.frameRate;
								return n.video = {
										mandatory: {
											chromeMediaSource: "desktop",
											chromeMediaSourceId: t,
											maxFrameRate: o || 3
										}
									}, i && (n.video.mandatory.maxWidth = i), r && (
										n.video.mandatory.maxHeight = r), e
									.navigator.mediaDevices.getUserMedia(n)
							}))
						} : console.error(
							"shimGetDisplayMedia: getSourceId argument is not a function"))
			}

			function D(e) {
				e.MediaStream = e.MediaStream || e.webkitMediaStream
			}

			function E(e) {
				if ("object" == typeof e && e.RTCPeerConnection && !("ontrack" in e
						.RTCPeerConnection.prototype)) {
					Object.defineProperty(e.RTCPeerConnection.prototype, "ontrack", {
						get() {
							return this._ontrack
						},
						set(e) {
							this._ontrack && this.removeEventListener("track", this
								._ontrack), this.addEventListener("track", this
								._ontrack = e)
						},
						enumerable: !0,
						configurable: !0
					});
					const t = e.RTCPeerConnection.prototype.setRemoteDescription;
					e.RTCPeerConnection.prototype.setRemoteDescription = function() {
						return this._ontrackpoly || (this._ontrackpoly = t => {
								t.stream.addEventListener("addtrack", (n => {
									let i;
									i = e.RTCPeerConnection.prototype
										.getReceivers ? this.getReceivers()
										.find((e => e.track && e.track
											.id === n.track.id)) : {
											track: n.track
										};
									const r = new Event("track");
									r.track = n.track, r.receiver = i, r
										.transceiver = {
											receiver: i
										}, r.streams = [t.stream], this
										.dispatchEvent(r)
								})), t.stream.getTracks().forEach((n => {
									let i;
									i = e.RTCPeerConnection.prototype
										.getReceivers ? this.getReceivers()
										.find((e => e.track && e.track
											.id === n.id)) : {
											track: n
										};
									const r = new Event("track");
									r.track = n, r.receiver = i, r
										.transceiver = {
											receiver: i
										}, r.streams = [t.stream], this
										.dispatchEvent(r)
								}))
							}, this.addEventListener("addstream", this._ontrackpoly)), t
							.apply(this, arguments)
					}
				} else l(e, "track", (e => (e.transceiver || Object.defineProperty(e,
					"transceiver", {
						value: {
							receiver: e.receiver
						}
					}), e)))
			}

			function S(e) {
				if ("object" == typeof e && e.RTCPeerConnection && !("getSenders" in e
						.RTCPeerConnection.prototype) && "createDTMFSender" in e
					.RTCPeerConnection.prototype) {
					const t = function(e, t) {
						return {
							track: t,
							get dtmf() {
								return void 0 === this._dtmf && ("audio" === t.kind ?
									this._dtmf = e.createDTMFSender(t) : this
									._dtmf = null), this._dtmf
							},
							_pc: e
						}
					};
					if (!e.RTCPeerConnection.prototype.getSenders) {
						e.RTCPeerConnection.prototype.getSenders = function() {
							return this._senders = this._senders || [], this._senders
							.slice()
						};
						const n = e.RTCPeerConnection.prototype.addTrack;
						e.RTCPeerConnection.prototype.addTrack = function(e, i) {
							let r = n.apply(this, arguments);
							return r || (r = t(this, e), this._senders.push(r)), r
						};
						const i = e.RTCPeerConnection.prototype.removeTrack;
						e.RTCPeerConnection.prototype.removeTrack = function(e) {
							i.apply(this, arguments);
							const t = this._senders.indexOf(e); - 1 !== t && this._senders
								.splice(t, 1)
						}
					}
					const n = e.RTCPeerConnection.prototype.addStream;
					e.RTCPeerConnection.prototype.addStream = function(e) {
						this._senders = this._senders || [], n.apply(this, [e]), e
							.getTracks().forEach((e => {
								this._senders.push(t(this, e))
							}))
					};
					const i = e.RTCPeerConnection.prototype.removeStream;
					e.RTCPeerConnection.prototype.removeStream = function(e) {
						this._senders = this._senders || [], i.apply(this, [e]), e
							.getTracks().forEach((e => {
								const t = this._senders.find((t => t.track === e));
								t && this._senders.splice(this._senders.indexOf(t),
									1)
							}))
					}
				} else if ("object" == typeof e && e.RTCPeerConnection && "getSenders" in e
					.RTCPeerConnection.prototype && "createDTMFSender" in e.RTCPeerConnection
					.prototype && e.RTCRtpSender && !("dtmf" in e.RTCRtpSender.prototype)) {
					const t = e.RTCPeerConnection.prototype.getSenders;
					e.RTCPeerConnection.prototype.getSenders = function() {
						const e = t.apply(this, []);
						return e.forEach((e => e._pc = this)), e
					}, Object.defineProperty(e.RTCRtpSender.prototype, "dtmf", {
						get() {
							return void 0 === this._dtmf && ("audio" === this.track
								.kind ? this._dtmf = this._pc.createDTMFSender(
									this.track) : this._dtmf = null), this._dtmf
						}
					})
				}
			}

			function L(e) {
				if (!e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection.prototype.getStats;
				e.RTCPeerConnection.prototype.getStats = function() {
					const [e, n, i] = arguments;
					if (arguments.length > 0 && "function" == typeof e) return t.apply(this,
						arguments);
					if (0 === t.length && (0 === arguments.length || "function" !=
						typeof e)) return t.apply(this, []);
					const r = function(e) {
							const t = {};
							return e.result().forEach((e => {
								const n = {
									id: e.id,
									timestamp: e.timestamp,
									type: {
										localcandidate: "local-candidate",
										remotecandidate: "remote-candidate"
									} [e.type] || e.type
								};
								e.names().forEach((t => {
									n[t] = e.stat(t)
								})), t[n.id] = n
							})), t
						},
						o = function(e) {
							return new Map(Object.keys(e).map((t => [t, e[t]])))
						};
					if (arguments.length >= 2) {
						const i = function(e) {
							n(o(r(e)))
						};
						return t.apply(this, [i, e])
					}
					return new Promise(((e, n) => {
						t.apply(this, [function(t) {
							e(o(r(t)))
						}, n])
					})).then(n, i)
				}
			}

			function T(e) {
				if (!("object" == typeof e && e.RTCPeerConnection && e.RTCRtpSender && e
						.RTCRtpReceiver)) return;
				if (!("getStats" in e.RTCRtpSender.prototype)) {
					const t = e.RTCPeerConnection.prototype.getSenders;
					t && (e.RTCPeerConnection.prototype.getSenders = function() {
						const e = t.apply(this, []);
						return e.forEach((e => e._pc = this)), e
					});
					const n = e.RTCPeerConnection.prototype.addTrack;
					n && (e.RTCPeerConnection.prototype.addTrack = function() {
						const e = n.apply(this, arguments);
						return e._pc = this, e
					}), e.RTCRtpSender.prototype.getStats = function() {
						const e = this;
						return this._pc.getStats().then((t => g(t, e.track, !0)))
					}
				}
				if (!("getStats" in e.RTCRtpReceiver.prototype)) {
					const t = e.RTCPeerConnection.prototype.getReceivers;
					t && (e.RTCPeerConnection.prototype.getReceivers = function() {
							const e = t.apply(this, []);
							return e.forEach((e => e._pc = this)), e
						}), l(e, "track", (e => (e.receiver._pc = e.srcElement, e))), e
						.RTCRtpReceiver.prototype.getStats = function() {
							const e = this;
							return this._pc.getStats().then((t => g(t, e.track, !1)))
						}
				}
				if (!("getStats" in e.RTCRtpSender.prototype) || !("getStats" in e
						.RTCRtpReceiver.prototype)) return;
				const t = e.RTCPeerConnection.prototype.getStats;
				e.RTCPeerConnection.prototype.getStats = function() {
					if (arguments.length > 0 && arguments[0] instanceof e
						.MediaStreamTrack) {
						const e = arguments[0];
						let t, n, i;
						return this.getSenders().forEach((n => {
								n.track === e && (t ? i = !0 : t = n)
							})), this.getReceivers().forEach((t => (t.track === e && (n ?
								i = !0 : n = t), t.track === e))), i || t && n ? Promise
							.reject(new DOMException(
								"There are more than one sender or receiver for the track.",
								"InvalidAccessError")) : t ? t.getStats() : n ? n
						.getStats() : Promise.reject(new DOMException(
								"There is no sender or receiver for the track.",
								"InvalidAccessError"))
					}
					return t.apply(this, arguments)
				}
			}

			function b(e) {
				e.RTCPeerConnection.prototype.getLocalStreams = function() {
					return this._shimmedLocalStreams = this._shimmedLocalStreams || {},
						Object.keys(this._shimmedLocalStreams).map((e => this
							._shimmedLocalStreams[e][0]))
				};
				const t = e.RTCPeerConnection.prototype.addTrack;
				e.RTCPeerConnection.prototype.addTrack = function(e, n) {
					if (!n) return t.apply(this, arguments);
					this._shimmedLocalStreams = this._shimmedLocalStreams || {};
					const i = t.apply(this, arguments);
					return this._shimmedLocalStreams[n.id] ? -1 === this
						._shimmedLocalStreams[n.id].indexOf(i) && this._shimmedLocalStreams[
							n.id].push(i) : this._shimmedLocalStreams[n.id] = [n, i], i
				};
				const n = e.RTCPeerConnection.prototype.addStream;
				e.RTCPeerConnection.prototype.addStream = function(e) {
					this._shimmedLocalStreams = this._shimmedLocalStreams || {}, e
						.getTracks().forEach((e => {
							if (this.getSenders().find((t => t.track === e)))
							throw new DOMException("Track already exists.",
									"InvalidAccessError")
						}));
					const t = this.getSenders();
					n.apply(this, arguments);
					const i = this.getSenders().filter((e => -1 === t.indexOf(e)));
					this._shimmedLocalStreams[e.id] = [e].concat(i)
				};
				const i = e.RTCPeerConnection.prototype.removeStream;
				e.RTCPeerConnection.prototype.removeStream = function(e) {
					return this._shimmedLocalStreams = this._shimmedLocalStreams || {},
						delete this._shimmedLocalStreams[e.id], i.apply(this, arguments)
				};
				const r = e.RTCPeerConnection.prototype.removeTrack;
				e.RTCPeerConnection.prototype.removeTrack = function(e) {
					return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, e &&
						Object.keys(this._shimmedLocalStreams).forEach((t => {
							const n = this._shimmedLocalStreams[t].indexOf(e); - 1
								!== n && this._shimmedLocalStreams[t].splice(n, 1),
								1 === this._shimmedLocalStreams[t].length &&
								delete this._shimmedLocalStreams[t]
						})), r.apply(this, arguments)
				}
			}

			function O(e, t) {
				if (!e.RTCPeerConnection) return;
				if (e.RTCPeerConnection.prototype.addTrack && t.version >= 65) return b(e);
				const n = e.RTCPeerConnection.prototype.getLocalStreams;
				e.RTCPeerConnection.prototype.getLocalStreams = function() {
					const e = n.apply(this);
					return this._reverseStreams = this._reverseStreams || {}, e.map((e =>
						this._reverseStreams[e.id]))
				};
				const i = e.RTCPeerConnection.prototype.addStream;
				e.RTCPeerConnection.prototype.addStream = function(t) {
					if (this._streams = this._streams || {}, this._reverseStreams = this
						._reverseStreams || {}, t.getTracks().forEach((e => {
							if (this.getSenders().find((t => t.track === e)))
							throw new DOMException("Track already exists.",
									"InvalidAccessError")
						})), !this._reverseStreams[t.id]) {
						const n = new e.MediaStream(t.getTracks());
						this._streams[t.id] = n, this._reverseStreams[n.id] = t, t = n
					}
					i.apply(this, [t])
				};
				const r = e.RTCPeerConnection.prototype.removeStream;

				function o(e, t) {
					let n = t.sdp;
					return Object.keys(e._reverseStreams || []).forEach((t => {
						const i = e._reverseStreams[t],
							r = e._streams[i.id];
						n = n.replace(new RegExp(r.id, "g"), i.id)
					})), new RTCSessionDescription({
						type: t.type,
						sdp: n
					})
				}

				function a(e, t) {
					let n = t.sdp;
					return Object.keys(e._reverseStreams || []).forEach((t => {
						const i = e._reverseStreams[t],
							r = e._streams[i.id];
						n = n.replace(new RegExp(i.id, "g"), r.id)
					})), new RTCSessionDescription({
						type: t.type,
						sdp: n
					})
				}
				e.RTCPeerConnection.prototype.removeStream = function(e) {
					this._streams = this._streams || {}, this._reverseStreams = this
						._reverseStreams || {}, r.apply(this, [this._streams[e.id] || e]),
						delete this._reverseStreams[this._streams[e.id] ? this._streams[e
							.id].id : e.id], delete this._streams[e.id]
				}, e.RTCPeerConnection.prototype.addTrack = function(t, n) {
					if ("closed" === this.signalingState) throw new DOMException(
						"The RTCPeerConnection's signalingState is 'closed'.",
						"InvalidStateError");
					const i = [].slice.call(arguments, 1);
					if (1 !== i.length || !i[0].getTracks().find((e => e === t)))
					throw new DOMException(
							"The adapter.js addTrack polyfill only supports a single  stream which is associated with the specified track.",
							"NotSupportedError");
					const r = this.getSenders().find((e => e.track === t));
					if (r) throw new DOMException("Track already exists.",
						"InvalidAccessError");
					this._streams = this._streams || {}, this._reverseStreams = this
						._reverseStreams || {};
					const o = this._streams[n.id];
					if (o) o.addTrack(t), Promise.resolve().then((() => {
						this.dispatchEvent(new Event("negotiationneeded"))
					}));
					else {
						const i = new e.MediaStream([t]);
						this._streams[n.id] = i, this._reverseStreams[i.id] = n, this
							.addStream(i)
					}
					return this.getSenders().find((e => e.track === t))
				}, ["createOffer", "createAnswer"].forEach((function(t) {
					const n = e.RTCPeerConnection.prototype[t],
						i = {
							[t]() {
								const e = arguments;
								return arguments.length && "function" ==
									typeof arguments[0] ? n.apply(this, [t => {
										const n = o(this, t);
										e[0].apply(null, [n])
									}, t => {
										e[1] && e[1].apply(null, t)
									}, arguments[2]]) : n.apply(this, arguments)
									.then((e => o(this, e)))
							}
						};
					e.RTCPeerConnection.prototype[t] = i[t]
				}));
				const s = e.RTCPeerConnection.prototype.setLocalDescription;
				e.RTCPeerConnection.prototype.setLocalDescription = function() {
					return arguments.length && arguments[0].type ? (arguments[0] = a(this,
						arguments[0]), s.apply(this, arguments)) : s.apply(this,
						arguments)
				};
				const c = Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,
					"localDescription");
				Object.defineProperty(e.RTCPeerConnection.prototype, "localDescription", {
					get() {
						const e = c.get.apply(this);
						return "" === e.type ? e : o(this, e)
					}
				}), e.RTCPeerConnection.prototype.removeTrack = function(e) {
					if ("closed" === this.signalingState) throw new DOMException(
						"The RTCPeerConnection's signalingState is 'closed'.",
						"InvalidStateError");
					if (!e._pc) throw new DOMException(
						"Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.",
						"TypeError");
					if (e._pc !== this) throw new DOMException(
						"Sender was not created by this connection.",
						"InvalidAccessError");
					let t;
					this._streams = this._streams || {}, Object.keys(this._streams).forEach(
						(n => {
							this._streams[n].getTracks().find((t => e.track ===
								t)) && (t = this._streams[n])
						})), t && (1 === t.getTracks().length ? this.removeStream(this
							._reverseStreams[t.id]) : t.removeTrack(e.track), this
						.dispatchEvent(new Event("negotiationneeded")))
				}
			}

			function C(e, t) {
				!e.RTCPeerConnection && e.webkitRTCPeerConnection && (e.RTCPeerConnection = e
					.webkitRTCPeerConnection), e.RTCPeerConnection && t.version < 53 && [
					"setLocalDescription", "setRemoteDescription", "addIceCandidate"
				].forEach((function(t) {
					const n = e.RTCPeerConnection.prototype[t],
						i = {
							[t]() {
								return arguments[0] = new("addIceCandidate" === t ?
										e.RTCIceCandidate : e.RTCSessionDescription)
									(arguments[0]), n.apply(this, arguments)
							}
						};
					e.RTCPeerConnection.prototype[t] = i[t]
				}))
			}

			function k(e, t) {
				l(e, "negotiationneeded", (e => {
					const n = e.target;
					if (!(t.version < 72 || n.getConfiguration && "plan-b" === n
							.getConfiguration().sdpSemantics) || "stable" === n
						.signalingState) return e
				}))
			}
			var P = n(22),
				I = n.n(P);

			function W(e) {
				const t = e && e.navigator,
					n = t.mediaDevices.getUserMedia.bind(t.mediaDevices);
				t.mediaDevices.getUserMedia = function(e) {
					return n(e).catch((e => Promise.reject(function(e) {
						return {
							name: {
								PermissionDeniedError: "NotAllowedError"
							} [e.name] || e.name,
							message: e.message,
							constraint: e.constraint,
							toString() {
								return this.name
							}
						}
					}(e))))
				}
			}

			function M(e) {
				"getDisplayMedia" in e.navigator && e.navigator.mediaDevices && (e.navigator
					.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || (e
						.navigator.mediaDevices.getDisplayMedia = e.navigator
						.getDisplayMedia.bind(e.navigator)))
			}

			function N(e, t) {
				if (e.RTCIceGatherer && (e.RTCIceCandidate || (e.RTCIceCandidate = function(e) {
						return e
					}), e.RTCSessionDescription || (e.RTCSessionDescription = function(e) {
						return e
					}), t.version < 15025)) {
					const t = Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,
						"enabled");
					Object.defineProperty(e.MediaStreamTrack.prototype, "enabled", {
						set(e) {
							t.set.call(this, e);
							const n = new Event("enabled");
							n.enabled = e, this.dispatchEvent(n)
						}
					})
				}
				e.RTCRtpSender && !("dtmf" in e.RTCRtpSender.prototype) && Object
					.defineProperty(e.RTCRtpSender.prototype, "dtmf", {
						get() {
							return void 0 === this._dtmf && ("audio" === this.track
									.kind ? this._dtmf = new e.RTCDtmfSender(this) :
									"video" === this.track.kind && (this._dtmf = null)),
								this._dtmf
						}
					}), e.RTCDtmfSender && !e.RTCDTMFSender && (e.RTCDTMFSender = e
						.RTCDtmfSender);
				const n = I()(e, t.version);
				e.RTCPeerConnection = function(e) {
					return e && e.iceServers && (e.iceServers = function(e, t) {
						let n = !1;
						return (e = JSON.parse(JSON.stringify(e))).filter((e => {
							if (e && (e.urls || e.url)) {
								let t = e.urls || e.url;
								e.url && !e.urls && h(
									"RTCIceServer.url",
									"RTCIceServer.urls");
								const i = "string" == typeof t;
								return i && (t = [t]), t = t.filter((
										e => {
											if (0 === e.indexOf(
													"stun:"))
											return !1;
											const t = e.startsWith(
													"turn") && !e
												.startsWith(
													"turn:[") && e
												.includes(
													"transport=udp"
													);
											return t && !n ? (n = !
												0, !0) : t && !n
										})), delete e.url, e.urls = i ?
									t[0] : t, !!t.length
							}
						}))
					}(e.iceServers, t.version), v("ICE servers after filtering:", e
						.iceServers)), new n(e)
				}, e.RTCPeerConnection.prototype = n.prototype
			}

			function x(e) {
				e.RTCRtpSender && !("replaceTrack" in e.RTCRtpSender.prototype) && (e
					.RTCRtpSender.prototype.replaceTrack = e.RTCRtpSender.prototype.setTrack
					)
			}

			function A(e, t) {
				const n = e && e.navigator,
					i = e && e.MediaStreamTrack;
				if (n.getUserMedia = function(e, t, i) {
						h("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), n
							.mediaDevices.getUserMedia(e).then(t, i)
					}, !(t.version > 55 && "autoGainControl" in n.mediaDevices
						.getSupportedConstraints())) {
					const e = function(e, t, n) {
							t in e && !(n in e) && (e[n] = e[t], delete e[t])
						},
						t = n.mediaDevices.getUserMedia.bind(n.mediaDevices);
					if (n.mediaDevices.getUserMedia = function(n) {
							return "object" == typeof n && "object" == typeof n.audio && (n =
								JSON.parse(JSON.stringify(n)), e(n.audio, "autoGainControl",
									"mozAutoGainControl"), e(n.audio, "noiseSuppression",
									"mozNoiseSuppression")), t(n)
						}, i && i.prototype.getSettings) {
						const t = i.prototype.getSettings;
						i.prototype.getSettings = function() {
							const n = t.apply(this, arguments);
							return e(n, "mozAutoGainControl", "autoGainControl"), e(n,
								"mozNoiseSuppression", "noiseSuppression"), n
						}
					}
					if (i && i.prototype.applyConstraints) {
						const t = i.prototype.applyConstraints;
						i.prototype.applyConstraints = function(n) {
							return "audio" === this.kind && "object" == typeof n && (n =
								JSON.parse(JSON.stringify(n)), e(n, "autoGainControl",
									"mozAutoGainControl"), e(n, "noiseSuppression",
									"mozNoiseSuppression")), t.apply(this, [n])
						}
					}
				}
			}

			function j(e, t) {
				e.navigator.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || e
					.navigator.mediaDevices && (e.navigator.mediaDevices.getDisplayMedia =
						function(n) {
							if (!n || !n.video) {
								const e = new DOMException(
									"getDisplayMedia without video constraints is undefined"
									);
								return e.name = "NotFoundError", e.code = 8, Promise.reject(e)
							}
							return !0 === n.video ? n.video = {
									mediaSource: t
								} : n.video.mediaSource = t, e.navigator.mediaDevices
								.getUserMedia(n)
						})
			}

			function U(e) {
				"object" == typeof e && e.RTCTrackEvent && "receiver" in e.RTCTrackEvent
					.prototype && !("transceiver" in e.RTCTrackEvent.prototype) && Object
					.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
						get() {
							return {
								receiver: this.receiver
							}
						}
					})
			}

			function V(e, t) {
				if ("object" != typeof e || !e.RTCPeerConnection && !e.mozRTCPeerConnection)
					return;
				!e.RTCPeerConnection && e.mozRTCPeerConnection && (e.RTCPeerConnection = e
					.mozRTCPeerConnection), t.version < 53 && ["setLocalDescription",
					"setRemoteDescription", "addIceCandidate"
				].forEach((function(t) {
					const n = e.RTCPeerConnection.prototype[t],
						i = {
							[t]() {
								return arguments[0] = new("addIceCandidate" === t ?
										e.RTCIceCandidate : e.RTCSessionDescription)
									(arguments[0]), n.apply(this, arguments)
							}
						};
					e.RTCPeerConnection.prototype[t] = i[t]
				}));
				const n = {
						inboundrtp: "inbound-rtp",
						outboundrtp: "outbound-rtp",
						candidatepair: "candidate-pair",
						localcandidate: "local-candidate",
						remotecandidate: "remote-candidate"
					},
					i = e.RTCPeerConnection.prototype.getStats;
				e.RTCPeerConnection.prototype.getStats = function() {
					const [e, r, o] = arguments;
					return i.apply(this, [e || null]).then((e => {
						if (t.version < 53 && !r) try {
							e.forEach((e => {
								e.type = n[e.type] || e.type
							}))
						} catch (t) {
							if ("TypeError" !== t.name) throw t;
							e.forEach(((t, i) => {
								e.set(i, Object.assign({}, t, {
									type: n[t
										.type] || t
										.type
								}))
							}))
						}
						return e
					})).then(r, o)
				}
			}

			function B(e) {
				if ("object" != typeof e || !e.RTCPeerConnection || !e.RTCRtpSender) return;
				if (e.RTCRtpSender && "getStats" in e.RTCRtpSender.prototype) return;
				const t = e.RTCPeerConnection.prototype.getSenders;
				t && (e.RTCPeerConnection.prototype.getSenders = function() {
					const e = t.apply(this, []);
					return e.forEach((e => e._pc = this)), e
				});
				const n = e.RTCPeerConnection.prototype.addTrack;
				n && (e.RTCPeerConnection.prototype.addTrack = function() {
					const e = n.apply(this, arguments);
					return e._pc = this, e
				}), e.RTCRtpSender.prototype.getStats = function() {
					return this.track ? this._pc.getStats(this.track) : Promise.resolve(
						new Map)
				}
			}

			function F(e) {
				if ("object" != typeof e || !e.RTCPeerConnection || !e.RTCRtpSender) return;
				if (e.RTCRtpSender && "getStats" in e.RTCRtpReceiver.prototype) return;
				const t = e.RTCPeerConnection.prototype.getReceivers;
				t && (e.RTCPeerConnection.prototype.getReceivers = function() {
						const e = t.apply(this, []);
						return e.forEach((e => e._pc = this)), e
					}), l(e, "track", (e => (e.receiver._pc = e.srcElement, e))), e
					.RTCRtpReceiver.prototype.getStats = function() {
						return this._pc.getStats(this.track)
					}
			}

			function H(e) {
				e.RTCPeerConnection && !("removeStream" in e.RTCPeerConnection.prototype) && (e
					.RTCPeerConnection.prototype.removeStream = function(e) {
						h("removeStream", "removeTrack"), this.getSenders().forEach((t => {
							t.track && e.getTracks().includes(t.track) && this
								.removeTrack(t)
						}))
					})
			}

			function G(e) {
				e.DataChannel && !e.RTCDataChannel && (e.RTCDataChannel = e.DataChannel)
			}

			function q(e) {
				if ("object" != typeof e || !e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection.prototype.addTransceiver;
				t && (e.RTCPeerConnection.prototype.addTransceiver = function() {
					this.setParametersPromises = [];
					const e = arguments[1],
						n = e && "sendEncodings" in e;
					n && e.sendEncodings.forEach((e => {
						if ("rid" in e && !/^[a-z0-9]{0,16}$/i.test(e.rid))
							throw new TypeError(
								"Invalid RID value provided.");
						if ("scaleResolutionDownBy" in e && !(parseFloat(e
								.scaleResolutionDownBy) >= 1))
						throw new RangeError(
								"scale_resolution_down_by must be >= 1.0"
								);
						if ("maxFramerate" in e && !(parseFloat(e
								.maxFramerate) >= 0)) throw new RangeError(
							"max_framerate must be >= 0.0")
					}));
					const i = t.apply(this, arguments);
					if (n) {
						const {
							sender: t
						} = i, n = t.getParameters();
						(!("encodings" in n) || 1 === n.encodings.length && 0 === Object
							.keys(n.encodings[0]).length) && (n.encodings = e
							.sendEncodings, t.sendEncodings = e.sendEncodings, this
							.setParametersPromises.push(t.setParameters(n).then((() => {
								delete t.sendEncodings
							})).catch((() => {
								delete t.sendEncodings
							}))))
					}
					return i
				})
			}

			function J(e) {
				if ("object" != typeof e || !e.RTCRtpSender) return;
				const t = e.RTCRtpSender.prototype.getParameters;
				t && (e.RTCRtpSender.prototype.getParameters = function() {
					const e = t.apply(this, arguments);
					return "encodings" in e || (e.encodings = [].concat(this
						.sendEncodings || [{}])), e
				})
			}

			function Q(e) {
				if ("object" != typeof e || !e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection.prototype.createOffer;
				e.RTCPeerConnection.prototype.createOffer = function() {
					return this.setParametersPromises && this.setParametersPromises.length ?
						Promise.all(this.setParametersPromises).then((() => t.apply(this,
							arguments))).finally((() => {
							this.setParametersPromises = []
						})) : t.apply(this, arguments)
				}
			}

			function z(e) {
				if ("object" != typeof e || !e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection.prototype.createAnswer;
				e.RTCPeerConnection.prototype.createAnswer = function() {
					return this.setParametersPromises && this.setParametersPromises.length ?
						Promise.all(this.setParametersPromises).then((() => t.apply(this,
							arguments))).finally((() => {
							this.setParametersPromises = []
						})) : t.apply(this, arguments)
				}
			}

			function $(e) {
				if ("object" == typeof e && e.RTCPeerConnection) {
					if ("getLocalStreams" in e.RTCPeerConnection.prototype || (e
							.RTCPeerConnection.prototype.getLocalStreams = function() {
								return this._localStreams || (this._localStreams = []), this
									._localStreams
							}), !("addStream" in e.RTCPeerConnection.prototype)) {
						const t = e.RTCPeerConnection.prototype.addTrack;
						e.RTCPeerConnection.prototype.addStream = function(e) {
							this._localStreams || (this._localStreams = []), this
								._localStreams.includes(e) || this._localStreams.push(e), e
								.getAudioTracks().forEach((n => t.call(this, n, e))), e
								.getVideoTracks().forEach((n => t.call(this, n, e)))
						}, e.RTCPeerConnection.prototype.addTrack = function(e, ...n) {
							return n && n.forEach((e => {
								this._localStreams ? this._localStreams
									.includes(e) || this._localStreams.push(e) :
									this._localStreams = [e]
							})), t.apply(this, arguments)
						}
					}
					"removeStream" in e.RTCPeerConnection.prototype || (e.RTCPeerConnection
						.prototype.removeStream = function(e) {
							this._localStreams || (this._localStreams = []);
							const t = this._localStreams.indexOf(e);
							if (-1 === t) return;
							this._localStreams.splice(t, 1);
							const n = e.getTracks();
							this.getSenders().forEach((e => {
								n.includes(e.track) && this.removeTrack(e)
							}))
						})
				}
			}

			function K(e) {
				if ("object" == typeof e && e.RTCPeerConnection && ("getRemoteStreams" in e
						.RTCPeerConnection.prototype || (e.RTCPeerConnection.prototype
							.getRemoteStreams = function() {
								return this._remoteStreams ? this._remoteStreams : []
							}), !("onaddstream" in e.RTCPeerConnection.prototype))) {
					Object.defineProperty(e.RTCPeerConnection.prototype, "onaddstream", {
						get() {
							return this._onaddstream
						},
						set(e) {
							this._onaddstream && (this.removeEventListener(
										"addstream", this._onaddstream), this
									.removeEventListener("track", this
										._onaddstreampoly)), this.addEventListener(
									"addstream", this._onaddstream = e), this
								.addEventListener("track", this._onaddstreampoly =
									e => {
										e.streams.forEach((e => {
											if (this._remoteStreams || (
													this
													._remoteStreams = []
													), this
												._remoteStreams
												.includes(e)) return;
											this._remoteStreams.push(e);
											const t = new Event(
												"addstream");
											t.stream = e, this
												.dispatchEvent(t)
										}))
									})
						}
					});
					const t = e.RTCPeerConnection.prototype.setRemoteDescription;
					e.RTCPeerConnection.prototype.setRemoteDescription = function() {
						const e = this;
						return this._onaddstreampoly || this.addEventListener("track", this
							._onaddstreampoly = function(t) {
								t.streams.forEach((t => {
									if (e._remoteStreams || (e
											._remoteStreams = []), e
										._remoteStreams.indexOf(t) >= 0)
										return;
									e._remoteStreams.push(t);
									const n = new Event("addstream");
									n.stream = t, e.dispatchEvent(n)
								}))
							}), t.apply(e, arguments)
					}
				}
			}

			function X(e) {
				if ("object" != typeof e || !e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection.prototype,
					n = t.createOffer,
					i = t.createAnswer,
					r = t.setLocalDescription,
					o = t.setRemoteDescription,
					a = t.addIceCandidate;
				t.createOffer = function(e, t) {
					const i = arguments.length >= 2 ? arguments[2] : arguments[0],
						r = n.apply(this, [i]);
					return t ? (r.then(e, t), Promise.resolve()) : r
				}, t.createAnswer = function(e, t) {
					const n = arguments.length >= 2 ? arguments[2] : arguments[0],
						r = i.apply(this, [n]);
					return t ? (r.then(e, t), Promise.resolve()) : r
				};
				let s = function(e, t, n) {
					const i = r.apply(this, [e]);
					return n ? (i.then(t, n), Promise.resolve()) : i
				};
				t.setLocalDescription = s, s = function(e, t, n) {
					const i = o.apply(this, [e]);
					return n ? (i.then(t, n), Promise.resolve()) : i
				}, t.setRemoteDescription = s, s = function(e, t, n) {
					const i = a.apply(this, [e]);
					return n ? (i.then(t, n), Promise.resolve()) : i
				}, t.addIceCandidate = s
			}

			function Y(e) {
				const t = e && e.navigator;
				if (t.mediaDevices && t.mediaDevices.getUserMedia) {
					const e = t.mediaDevices,
						n = e.getUserMedia.bind(e);
					t.mediaDevices.getUserMedia = e => n(Z(e))
				}!t.getUserMedia && t.mediaDevices && t.mediaDevices.getUserMedia && (t
					.getUserMedia = function(e, n, i) {
						t.mediaDevices.getUserMedia(e).then(n, i)
					}.bind(t))
			}

			function Z(e) {
				return e && void 0 !== e.video ? Object.assign({}, e, {
					video: y(e.video)
				}) : e
			}

			function ee(e) {
				if (!e.RTCPeerConnection) return;
				const t = e.RTCPeerConnection;
				e.RTCPeerConnection = function(e, n) {
						if (e && e.iceServers) {
							const t = [];
							for (let n = 0; n < e.iceServers.length; n++) {
								let i = e.iceServers[n];
								!i.hasOwnProperty("urls") && i.hasOwnProperty("url") ? (h(
										"RTCIceServer.url", "RTCIceServer.urls"), i = JSON
									.parse(JSON.stringify(i)), i.urls = i.url, delete i.url,
									t.push(i)) : t.push(e.iceServers[n])
							}
							e.iceServers = t
						}
						return new t(e, n)
					}, e.RTCPeerConnection.prototype = t.prototype, "generateCertificate" in
					t && Object.defineProperty(e.RTCPeerConnection, "generateCertificate", {
						get: () => t.generateCertificate
					})
			}

			function te(e) {
				"object" == typeof e && e.RTCTrackEvent && "receiver" in e.RTCTrackEvent
					.prototype && !("transceiver" in e.RTCTrackEvent.prototype) && Object
					.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
						get() {
							return {
								receiver: this.receiver
							}
						}
					})
			}

			function ne(e) {
				const t = e.RTCPeerConnection.prototype.createOffer;
				e.RTCPeerConnection.prototype.createOffer = function(e) {
					if (e) {
						void 0 !== e.offerToReceiveAudio && (e.offerToReceiveAudio = !!e
							.offerToReceiveAudio);
						const t = this.getTransceivers().find((e => "audio" === e.receiver
							.track.kind));
						!1 === e.offerToReceiveAudio && t ? "sendrecv" === t.direction ? t
							.setDirection ? t.setDirection("sendonly") : t.direction =
							"sendonly" : "recvonly" === t.direction && (t.setDirection ? t
								.setDirection("inactive") : t.direction = "inactive") : !
							0 !== e.offerToReceiveAudio || t || this.addTransceiver(
							"audio"), void 0 !== e.offerToReceiveVideo && (e
								.offerToReceiveVideo = !!e.offerToReceiveVideo);
						const n = this.getTransceivers().find((e => "video" === e.receiver
							.track.kind));
						!1 === e.offerToReceiveVideo && n ? "sendrecv" === n.direction ? n
							.setDirection ? n.setDirection("sendonly") : n.direction =
							"sendonly" : "recvonly" === n.direction && (n.setDirection ? n
								.setDirection("inactive") : n.direction = "inactive") : !
							0 !== e.offerToReceiveVideo || n || this.addTransceiver("video")
					}
					return t.apply(this, arguments)
				}
			}

			function ie(e) {
				"object" != typeof e || e.AudioContext || (e.AudioContext = e
					.webkitAudioContext)
			}
			var re = n(3),
				oe = n.n(re);

			function ae(e) {
				if (!e.RTCIceCandidate || e.RTCIceCandidate && "foundation" in e.RTCIceCandidate
					.prototype) return;
				const t = e.RTCIceCandidate;
				e.RTCIceCandidate = function(e) {
					if ("object" == typeof e && e.candidate && 0 === e.candidate.indexOf(
							"a=") && ((e = JSON.parse(JSON.stringify(e))).candidate = e
							.candidate.substr(2)), e.candidate && e.candidate.length) {
						const n = new t(e),
							i = oe.a.parseCandidate(e.candidate),
							r = Object.assign(n, i);
						return r.toJSON = function() {
							return {
								candidate: r.candidate,
								sdpMid: r.sdpMid,
								sdpMLineIndex: r.sdpMLineIndex,
								usernameFragment: r.usernameFragment
							}
						}, r
					}
					return new t(e)
				}, e.RTCIceCandidate.prototype = t.prototype, l(e, "icecandidate", (t => (t
					.candidate && Object.defineProperty(t, "candidate", {
						value: new e.RTCIceCandidate(t.candidate),
						writable: "false"
					}), t)))
			}

			function se(e, t) {
				if (!e.RTCPeerConnection) return;
				"sctp" in e.RTCPeerConnection.prototype || Object.defineProperty(e
					.RTCPeerConnection.prototype, "sctp", {
						get() {
							return void 0 === this._sctp ? null : this._sctp
						}
					});
				const n = function(e) {
						if (!e || !e.sdp) return !1;
						const t = oe.a.splitSections(e.sdp);
						return t.shift(), t.some((e => {
							const t = oe.a.parseMLine(e);
							return t && "application" === t.kind && -1 !== t
								.protocol.indexOf("SCTP")
						}))
					},
					i = function(e) {
						const t = e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);
						if (null === t || t.length < 2) return -1;
						const n = parseInt(t[1], 10);
						return n != n ? -1 : n
					},
					r = function(e) {
						let n = 65536;
						return "firefox" === t.browser && (n = t.version < 57 ? -1 === e ?
							16384 : 2147483637 : t.version < 60 ? 57 === t.version ? 65535 :
							65536 : 2147483637), n
					},
					o = function(e, n) {
						let i = 65536;
						"firefox" === t.browser && 57 === t.version && (i = 65535);
						const r = oe.a.matchPrefix(e.sdp, "a=max-message-size:");
						return r.length > 0 ? i = parseInt(r[0].substr(19), 10) : "firefox" ===
							t.browser && -1 !== n && (i = 2147483637), i
					},
					a = e.RTCPeerConnection.prototype.setRemoteDescription;
				e.RTCPeerConnection.prototype.setRemoteDescription = function() {
					if (this._sctp = null, "chrome" === t.browser && t.version >= 76) {
						const {
							sdpSemantics: e
						} = this.getConfiguration();
						"plan-b" === e && Object.defineProperty(this, "sctp", {
							get() {
								return void 0 === this._sctp ? null : this._sctp
							},
							enumerable: !0,
							configurable: !0
						})
					}
					if (n(arguments[0])) {
						const e = i(arguments[0]),
							t = r(e),
							n = o(arguments[0], e);
						let a;
						a = 0 === t && 0 === n ? Number.POSITIVE_INFINITY : 0 === t || 0 ===
							n ? Math.max(t, n) : Math.min(t, n);
						const s = {};
						Object.defineProperty(s, "maxMessageSize", {
							get: () => a
						}), this._sctp = s
					}
					return a.apply(this, arguments)
				}
			}

			function ce(e) {
				if (!e.RTCPeerConnection || !("createDataChannel" in e.RTCPeerConnection
						.prototype)) return;

				function t(e, t) {
					const n = e.send;
					e.send = function() {
						const i = arguments[0],
							r = i.length || i.size || i.byteLength;
						if ("open" === e.readyState && t.sctp && r > t.sctp.maxMessageSize)
							throw new TypeError(
								"Message too large (can send a maximum of " + t.sctp
								.maxMessageSize + " bytes)");
						return n.apply(e, arguments)
					}
				}
				const n = e.RTCPeerConnection.prototype.createDataChannel;
				e.RTCPeerConnection.prototype.createDataChannel = function() {
					const e = n.apply(this, arguments);
					return t(e, this), e
				}, l(e, "datachannel", (e => (t(e.channel, e.target), e)))
			}

			function ue(e) {
				if (!e.RTCPeerConnection || "connectionState" in e.RTCPeerConnection.prototype)
					return;
				const t = e.RTCPeerConnection.prototype;
				Object.defineProperty(t, "connectionState", {
					get() {
						return {
							completed: "connected",
							checking: "connecting"
						} [this.iceConnectionState] || this.iceConnectionState
					},
					enumerable: !0,
					configurable: !0
				}), Object.defineProperty(t, "onconnectionstatechange", {
					get() {
						return this._onconnectionstatechange || null
					},
					set(e) {
						this._onconnectionstatechange && (this.removeEventListener(
									"connectionstatechange", this
									._onconnectionstatechange), delete this
								._onconnectionstatechange), e && this
							.addEventListener("connectionstatechange", this
								._onconnectionstatechange = e)
					},
					enumerable: !0,
					configurable: !0
				}), ["setLocalDescription", "setRemoteDescription"].forEach((e => {
					const n = t[e];
					t[e] = function() {
						return this._connectionstatechangepoly || (this
							._connectionstatechangepoly = e => {
								const t = e.target;
								if (t._lastConnectionState !== t
									.connectionState) {
									t._lastConnectionState = t
										.connectionState;
									const n = new Event(
										"connectionstatechange", e);
									t.dispatchEvent(n)
								}
								return e
							}, this.addEventListener(
								"iceconnectionstatechange", this
								._connectionstatechangepoly)), n.apply(this,
							arguments)
					}
				}))
			}

			function de(e, t) {
				if (!e.RTCPeerConnection) return;
				if ("chrome" === t.browser && t.version >= 71) return;
				if ("safari" === t.browser && t.version >= 605) return;
				const n = e.RTCPeerConnection.prototype.setRemoteDescription;
				e.RTCPeerConnection.prototype.setRemoteDescription = function(t) {
					if (t && t.sdp && -1 !== t.sdp.indexOf("\na=extmap-allow-mixed")) {
						const n = t.sdp.split("\n").filter((e => "a=extmap-allow-mixed" !==
							e.trim())).join("\n");
						e.RTCSessionDescription && t instanceof e.RTCSessionDescription ?
							arguments[0] = new e.RTCSessionDescription({
								type: t.type,
								sdp: n
							}) : t.sdp = n
					}
					return n.apply(this, arguments)
				}
			}

			function le(e, t) {
				if (!e.RTCPeerConnection || !e.RTCPeerConnection.prototype) return;
				const n = e.RTCPeerConnection.prototype.addIceCandidate;
				n && 0 !== n.length && (e.RTCPeerConnection.prototype.addIceCandidate =
					function() {
						return arguments[0] ? ("chrome" === t.browser && t.version < 78 ||
								"firefox" === t.browser && t.version < 68 || "safari" === t
								.browser) && arguments[0] && "" === arguments[0].candidate ?
							Promise.resolve() : n.apply(this, arguments) : (arguments[1] &&
								arguments[1].apply(null), Promise.resolve())
					})
			}
			const pe = function({
				window: e
			} = {}, t = {
				shimChrome: !0,
				shimFirefox: !0,
				shimEdge: !0,
				shimSafari: !0
			}) {
				const n = v,
					c = function(e) {
						const t = {
							browser: null,
							version: null
						};
						if (void 0 === e || !e.navigator) return t.browser =
							"Not a browser.", t;
						const {
							navigator: n
						} = e;
						if (n.mozGetUserMedia) t.browser = "firefox", t.version = d(n
							.userAgent, /Firefox\/(\d+)\./, 1);
						else if (n.webkitGetUserMedia || !1 === e.isSecureContext && e
							.webkitRTCPeerConnection && !e.RTCIceGatherer) t.browser =
							"chrome", t.version = d(n.userAgent, /Chrom(e|ium)\/(\d+)\./,
							2);
						else if (n.mediaDevices && n.userAgent.match(/Edge\/(\d+).(\d+)$/))
							t.browser = "edge", t.version = d(n.userAgent,
								/Edge\/(\d+).(\d+)$/, 2);
						else {
							if (!e.RTCPeerConnection || !n.userAgent.match(
									/AppleWebKit\/(\d+)\./)) return t.browser =
								"Not a supported browser.", t;
							t.browser = "safari", t.version = d(n.userAgent,
									/AppleWebKit\/(\d+)\./, 1), t.supportsUnifiedPlan = e
								.RTCRtpTransceiver && "currentDirection" in e
								.RTCRtpTransceiver.prototype
						}
						return t
					}(e),
					u = {
						browserDetails: c,
						commonShim: s,
						extractVersion: d,
						disableLog: p,
						disableWarnings: f
					};
				switch (c.browser) {
					case "chrome":
						if (!i || !C || !t.shimChrome) return n(
								"Chrome shim is not included in this adapter release."),
							u;
						if (null === c.version) return n(
								"Chrome shim can not determine version, not shimming."),
							u;
						n("adapter.js shimming chrome."), u.browserShim = i, le(e, c), _(e,
								c), D(e), C(e, c), E(e), O(e, c), S(e), L(e), T(e), k(e, c),
							ae(e), ue(e), se(e, c), ce(e), de(e, c);
						break;
					case "firefox":
						if (!o || !V || !t.shimFirefox) return n(
								"Firefox shim is not included in this adapter release."
								), u;
						n("adapter.js shimming firefox."), u.browserShim = o, le(e, c), A(e,
								c), V(e, c), U(e), H(e), B(e), F(e), G(e), q(e), J(e), Q(e),
							z(e), ae(e), ue(e), se(e, c), ce(e);
						break;
					case "edge":
						if (!r || !N || !t.shimEdge) return n(
								"MS edge shim is not included in this adapter release."
								), u;
						n("adapter.js shimming edge."), u.browserShim = r, W(e), M(e), N(e,
							c), x(e), se(e, c), ce(e);
						break;
					case "safari":
						if (!a || !t.shimSafari) return n(
								"Safari shim is not included in this adapter release."),
							u;
						n("adapter.js shimming safari."), u.browserShim = a, le(e, c), ee(
							e), ne(e), X(e), $(e), K(e), te(e), Y(e), ie(e), ae(e), se(e,
							c), ce(e), de(e, c);
						break;
					default:
						n("Unsupported browser!")
				}
				return u
			}({
				window: "undefined" == typeof window ? void 0 : window
			});
			t.default = pe
		}])
	}));
	(Ot = Ct) && Ot.__esModule && Object.prototype.hasOwnProperty.call(Ot, "default") && Ot.default;
	var kt, Pt, It;
	kt = function(e) {
		"object" === n(e) && (e = oe(e)), console.warn("[cc warning]: ".concat(e))
	}, Pt = function(e) {
		"object" === n(e) && (e = oe(e)), console.log("[cc logs]: ".concat(e))
	}, It = function(e) {
		"object" === n(e) && (e = oe(e)), console.error("[cc error]: ".concat(e))
	};
	var Wt = "\t\n\v\f\r   ᠎             　\u2028\u2029\ufeff",
		Mt = "[" + Wt + "]",
		Nt = RegExp("^" + Mt + Mt + "*"),
		xt = RegExp(Mt + Mt + "*$"),
		At = function(e, t, n) {
			var i = {},
				r = G((function() {
					return !!Wt[e]() || "​" != "​" [e]()
				})),
				o = i[e] = r ? t(jt) : Wt[e];
			n && (i[n] = o), ne(ne.P + ne.F * r, "String", i)
		},
		jt = At.trim = function(e, t) {
			return e = String(l(e)), 1 & t && (e = e.replace(Nt, "")), 2 & t && (e = e.replace(xt, "")), e
		},
		Ut = At,
		Vt = C.parseInt,
		Bt = Ut.trim,
		Ft = /^[-+]?0[xX]/,
		Ht = 8 !== Vt(Wt + "08") || 22 !== Vt(Wt + "0x16") ? function(e, t) {
			var n = Bt(String(e), 3);
			return Vt(n, t >>> 0 || (Ft.test(n) ? 16 : 10))
		} : Vt;
	ne(ne.G + ne.F * (parseInt != Ht), {
		parseInt: Ht
	});
	var Gt = O.parseInt;
	ne(ne.S + ne.F * !q, "Object", {
		defineProperty: Y.f
	});
	O.Object;
	var qt = Ne("species"),
		Jt = function(e, t) {
			var n, i = ue(e).constructor;
			return void 0 === i || null == (n = ue(i)[qt]) ? t : Ce(n)
		},
		Qt = Math.min,
		zt = [].push,
		$t = 4294967295,
		Kt = !de((function() {
			RegExp($t, "y")
		}));
	Dt("split", 2, (function(e, t, n, i) {
		var r;
		return r = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab"
			.split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length >
			1 || "".split(/.?/).length ? function(e, t) {
				var i = String(this);
				if (void 0 === e && 0 === t) return [];
				if (!Ae(e)) return n.call(i, e, t);
				for (var r, o, a, s = [], c = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e
							.unicode ? "u" : "") + (e.sticky ? "y" : ""), u = 0, d = void 0 === t ? $t :
						t >>> 0, l = new RegExp(e.source, c + "g");
					(r = gt.call(l, i)) && !((o = l.lastIndex) > u && (s.push(i.slice(u, r.index)), r
						.length > 1 && r.index < i.length && zt.apply(s, r.slice(1)), a = r[0]
						.length, u = o, s.length >= d));) l.lastIndex === r.index && l.lastIndex++;
				return u === i.length ? !a && l.test("") || s.push("") : s.push(i.slice(u)), s.length >
					d ? s.slice(0, d) : s
			} : "0".split(void 0, 0).length ? function(e, t) {
				return void 0 === e && 0 === t ? [] : n.call(this, e, t)
			} : n, [function(n, i) {
				var o = e(this),
					a = null == n ? void 0 : n[t];
				return void 0 !== a ? a.call(n, o, i) : r.call(String(o), n, i)
			}, function(e, t) {
				var o = i(r, e, this, t, r !== n);
				if (o.done) return o.value;
				var a = ue(e),
					s = String(this),
					c = Jt(a, RegExp),
					u = a.unicode,
					d = (a.ignoreCase ? "i" : "") + (a.multiline ? "m" : "") + (a.unicode ? "u" :
						"") + (Kt ? "y" : "g"),
					l = new c(Kt ? a : "^(?:" + a.source + ")", d),
					p = void 0 === t ? $t : t >>> 0;
				if (0 === p) return [];
				if (0 === s.length) return null === lt(l, s) ? [s] : [];
				for (var f = 0, v = 0, h = []; v < s.length;) {
					l.lastIndex = Kt ? v : 0;
					var m, y = lt(l, Kt ? s : s.slice(v));
					if (null === y || (m = Qt(ze(l.lastIndex + (Kt ? 0 : v)), s.length)) === f) v =
						at(s, v, u);
					else {
						if (h.push(s.slice(f, v)), h.length === p) return h;
						for (var g = 1; g <= y.length - 1; g++)
							if (h.push(y[g]), h.length === p) return h;
						v = f = m
					}
				}
				return h.push(s.slice(f)), h
			}]
	}));
	var Xt = {};
	Xt[Ne("toStringTag")] = "z", Xt + "" != "[object z]" && Oe(Object.prototype, "toString", (function() {
		return "[object " + ut(this) + "]"
	}), !0), le && "g" != /./g.flags && ge.f(RegExp.prototype, "flags", {
		configurable: !0,
		get: pt
	});
	var Yt = "toString",
		Zt = /./.toString,
		en = function(e) {
			Oe(RegExp.prototype, Yt, e, !0)
		};
	de((function() {
		return "/a/b" != Zt.call({
			source: "a",
			flags: "b"
		})
	})) ? en((function() {
		var e = ue(this);
		return "/".concat(e.source, "/", "flags" in e ? e.flags : !le && e instanceof RegExp ? pt.call(
			e) : void 0)
	})) : Zt.name != Yt && en((function() {
		return Zt.call(this)
	})), Dt("match", 1, (function(e, t, n, i) {
		return [function(n) {
			var i = e(this),
				r = null == n ? void 0 : n[t];
			return void 0 !== r ? r.call(n, i) : new RegExp(n)[t](String(i))
		}, function(e) {
			var t = i(n, e, this);
			if (t.done) return t.value;
			var r = ue(e),
				o = String(this);
			if (!r.global) return lt(r, o);
			var a = r.unicode;
			r.lastIndex = 0;
			for (var s, c = [], u = 0; null !== (s = lt(r, o));) {
				var d = String(s[0]);
				c[u] = d, "" === d && (r.lastIndex = at(o, ze(r.lastIndex), a)), u++
			}
			return 0 === u ? null : c
		}]
	}));
	var tn = ae.document,
		nn = tn && tn.documentElement,
		rn = [].slice;
	Ie(Ie.P + Ie.F * de((function() {
		nn && rn.call(nn)
	})), "Array", {
		slice: function(e, t) {
			var n = ze(this.length),
				i = Me(this);
			if (t = void 0 === t ? n : t, "Array" == i) return rn.call(this, e, t);
			for (var r = Xe(e, n), o = Xe(t, n), a = ze(o - r), s = new Array(a), c = 0; c < a; c++) s[
				c] = "String" == i ? this.charAt(r + c) : this[r + c];
			return s
		}
	});
	var on = Object.is || function(e, t) {
		return e === t ? 0 !== e || 1 / e == 1 / t : e != e && t != t
	};
	Dt("search", 1, (function(e, t, n, i) {
		return [function(n) {
			var i = e(this),
				r = null == n ? void 0 : n[t];
			return void 0 !== r ? r.call(n, i) : new RegExp(n)[t](String(i))
		}, function(e) {
			var t = i(n, e, this);
			if (t.done) return t.value;
			var r = ue(e),
				o = String(this),
				a = r.lastIndex;
			on(a, 0) || (r.lastIndex = 0);
			var s = lt(r, o);
			return on(r.lastIndex, a) || (r.lastIndex = a), null === s ? -1 : s.index
		}]
	}));
	var an = Array.isArray || function(e) {
			return "Array" == Me(e)
		},
		sn = Ne("species"),
		cn = function(e, t) {
			return new(function(e) {
				var t;
				return an(e) && ("function" != typeof(t = e.constructor) || t !== Array && !an(t
						.prototype) || (t = void 0), ce(t) && null === (t = t[sn]) && (t = void 0)),
					void 0 === t ? Array : t
			}(e))(t)
		},
		un = function(e, t) {
			var n = 1 == e,
				i = 2 == e,
				r = 3 == e,
				o = 4 == e,
				a = 6 == e,
				s = 5 == e || a,
				c = t || cn;
			return function(t, u, d) {
				for (var l, p, f = it(t), v = Fe(f), h = ke(u, d, 3), m = ze(v.length), y = 0, g = n ? c(t, m) :
						i ? c(t, 0) : void 0; m > y; y++)
					if ((s || y in v) && (p = h(l = v[y], y, f), e))
						if (n) g[y] = p;
						else if (p) switch (e) {
					case 3:
						return !0;
					case 5:
						return l;
					case 6:
						return y;
					case 2:
						g.push(l)
				} else if (o) return !1;
				return a ? -1 : r || o ? o : g
			}
		},
		dn = un(5),
		ln = "find",
		pn = !0;
	ln in [] && Array(1).find((function() {
		pn = !1
	})), Ie(Ie.P + Ie.F * pn, "Array", {
		find: function(e) {
			return dn(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	}), tt(ln);
	var fn = {
			f: {}.propertyIsEnumerable
		},
		vn = Object.getOwnPropertyDescriptor,
		hn = {
			f: le ? vn : function(e, t) {
				if (e = He(e), t = me(t, !0), he) try {
					return vn(e, t)
				} catch (e) {}
				if (De(e, t)) return Re(!fn.f.call(e, t), e[t])
			}
		},
		mn = function(e, t) {
			if (ue(e), !ce(t) && null !== t) throw TypeError(t + ": can't set as prototype!")
		},
		yn = {
			set: Object.setPrototypeOf || ("__proto__" in {} ? function(e, t, n) {
				try {
					(n = ke(Function.call, hn.f(Object.prototype, "__proto__").set, 2))(e, []), t = !(
						e instanceof Array)
				} catch (e) {
					t = !0
				}
				return function(e, i) {
					return mn(e, i), t ? e.__proto__ = i : n(e, i), e
				}
			}({}, !1) : void 0),
			check: mn
		},
		gn = yn.set,
		Rn = function(e, t, n) {
			var i, r = t.constructor;
			return r !== n && "function" == typeof r && (i = r.prototype) !== n.prototype && ce(i) && gn && gn(e,
				i), e
		},
		_n = Te("keys"),
		wn = function(e) {
			return _n[e] || (_n[e] = Le(e))
		},
		Dn = Ye(!1),
		En = wn("IE_PROTO"),
		Sn = function(e, t) {
			var n, i = He(e),
				r = 0,
				o = [];
			for (n in i) n != En && De(i, n) && o.push(n);
			for (; t.length > r;) De(i, n = t[r++]) && (~Dn(o, n) || o.push(n));
			return o
		},
		Ln = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(
			","),
		Tn = Ln.concat("length", "prototype"),
		bn = {
			f: Object.getOwnPropertyNames || function(e) {
				return Sn(e, Tn)
			}
		},
		On = Ne("species"),
		Cn = function(e) {
			var t = ae[e];
			le && t && !t[On] && ge.f(t, On, {
				configurable: !0,
				get: function() {
					return this
				}
			})
		},
		kn = ge.f,
		Pn = bn.f,
		In = ae.RegExp,
		Wn = In,
		Mn = In.prototype,
		Nn = /a/g,
		xn = /a/g,
		An = new In(Nn) !== Nn;
	if (le && (!An || de((function() {
			return xn[Ne("match")] = !1, In(Nn) != Nn || In(xn) == xn || "/a/i" != In(Nn, "i")
		})))) {
		In = function(e, t) {
			var n = this instanceof In,
				i = Ae(e),
				r = void 0 === t;
			return !n && i && e.constructor === In && r ? e : Rn(An ? new Wn(i && !r ? e.source : e, t) : Wn((
				i = e instanceof In) ? e.source : e, i && r ? pt.call(e) : t), n ? this : Mn, In)
		};
		for (var jn = function(e) {
				e in In || kn(In, e, {
					configurable: !0,
					get: function() {
						return Wn[e]
					},
					set: function(t) {
						Wn[e] = t
					}
				})
			}, Un = Pn(Wn), Vn = 0; Un.length > Vn;) jn(Un[Vn++]);
		Mn.constructor = In, In.prototype = Mn, Oe(ae, "RegExp", In)
	}
	Cn("RegExp");
	var Bn = function(e) {
			return 0 === ie(e).length
		},
		Fn = function(e, t) {
			var n = e + "=" + escape(t) + "; expires=Fri, 31 Dec 9999 23:59:59 GMT";
			document.cookie = n
		},
		Hn = function(e) {
			var t = [];
			for (var n in e) t.push(encodeURIComponent(n) + "=" + encodeURIComponent(e[n]));
			return t.join("&")
		},
		Gn = function() {
			return window.navigator.userAgent.toLowerCase()
		},
		qn = function() {
			return !!navigator.userAgent.match(
				/(phone|pad|pod|iPhone|iPod|ios|iPad|android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
				)
		},
		Jn = function(e) {
			if (void 0 !== e) return "string" != typeof e && (e = e.toString()), JSON.parse(e)
		},
		Qn = function(e) {
			if ("string" == typeof e) try {
				return JSON.parse(e)
			} catch (e) {
				return {}
			}
			return e
		},
		zn = function(e) {
			if (e) {
				e.length <= 10 && (e *= 1e3);
				var t = new Date(e);
				return t.getFullYear() + "-" + ((t.getMonth() + 1 < 10 ? "0" + (t.getMonth() + 1) : t.getMonth() +
					1) + "-") + (t.getDate() + " ") + (t.getHours() < 10 ? "0" + t.getHours() + ":" : t
					.getHours() + ":") + (t.getMinutes() < 10 ? "0" + t.getMinutes() + ":" : t.getMinutes() +
					":") + (t.getSeconds() < 10 ? "0" + t.getSeconds() : t.getSeconds())
			}
		},
		$n = function(e, t) {
			window.isDebug && console && "function" == typeof console.log && console.log(e, t)
		};

	function Kn(e, t) {
		var n = window.location.href;
		n = t || n;
		var i = decodeURIComponent(n),
			r = i.indexOf("?"),
			o = i.substring(r + 1),
			a = new RegExp("(^|&)".concat(e, "=([^&]*)(&|$)"), "i"),
			s = o.match(a);
		return null !== s ? s[2] : ""
	}
	var Xn = {
		lang: "en" !== function(e) {
			var t = e + "=",
				n = document.cookie.indexOf(t);
			if (-1 == n) return null;
			var i = document.cookie.indexOf(";", n + t.length); - 1 == i && (i = document.cookie.length);
			var r = document.cookie.substring(n + t.length, i);
			return unescape(r)
		}("lang"),
		hours: function() {
			return this.lang ? "时" : "h"
		},
		day: function() {
			return this.lang ? "天" : "day"
		},
		monutes: function() {
			return this.lang ? "分" : "m"
		},
		seconds: function() {
			return this.lang ? "秒" : "s"
		},
		live_break: function() {
			return this.lang ? "直播中断" : "Live interruption"
		},
		live_end: function() {
			return this.lang ? "直播结束" : "Live Ended"
		},
		live_ban: function() {
			return this.lang ? "直播间已封禁" : "room have been banned"
		},
		live_waiting: function() {
			return this.lang ? "直播等待中" : "waiting for live"
		},
		mult_live_waiting: function() {
			return this.lang ? "等待中" : "waiting"
		},
		live_reconnect: function() {
			return this.lang ? "连接中断，重新连接中..." : "Connection loss,reconnecting"
		},
		live_error: function() {
			return this.lang ? "获取直播信息失败,请刷新页面重试" :
				"Failed to get live information,please refresh the page retry"
		},
		live_limit: function() {
			return this.lang ? "直播人数已达上限" : "The live user count has reached its upper limit"
		},
		live_start_btn: function() {
			return this.lang ? "开始播放" : "Start playing"
		},
		live_start_tips: function() {
			return this.lang ? "您的浏览器暂不支持自动播放" : "Your browser does not support autoplay"
		},
		live_detection_tips: function() {
			return this.lang ? "房间信息检测错误" : "Room information detection error"
		},
		warm_player_error: function() {
			return this.lang ? "暖场视频播放失败，无法解析视频格式" :
				"Warm up video playback failed, unable to parse video format"
		},
		warm_url_error: function() {
			return this.lang ? "资源异常，无法播放" : "Resource exception, unable to play"
		},
		timeout: function() {
			return this.lang ? "距开播" : "Start broadcasting"
		}
	};

	function Yn(e, t) {
		if ("string" == typeof e && "string" == typeof t) {
			for (var n = e.split("."), i = t.split("."), r = 0, o = n.length, a = !1; r < o - 1;) {
				var s = Gt(n[r]),
					c = Gt(i[r]);
				if (s > c) {
					a = !0;
					break
				}
				if (s < c) {
					a = !1;
					break
				}
				r++
			}
			return a
		}
	}
	var Zn = {
			getScript: function(e, t) {
				var n = !1,
					i = document.createElement("script");
				i.src = e, i.onload = i.onreadystatechange = function() {
					n || this.readyState && "loaded" != this.readyState && "complete" != this.readyState ||
						(n = !0, t && t())
				}, document.body.appendChild(i)
			},
			loadScript: function(e, t) {
				if ("string" == typeof e) {
					var n = e;
					(e = []).push(n)
				}
				var i = this;
				! function e(t, n) {
					i.getScript(t.shift(), (function() {
						t.length ? e(t, n) : n && n()
					}))
				}(e, t)
			},
			isIE: function() {
				return !(!window.ActiveXObject && !("ActiveXObject" in window))
			},
			getDate: function() {
				var e = new Date;
				return e.getMonth() + "_" + e.getDay() + "_" + e.getHours() + "_" + e.getMinutes() + "_" + e
					.getSeconds()
			},
			startTestVersion: function(e) {
				var t = e.h5 ? e.h5 : {};
				if (t.lowVersion && Yn(t.lowVersion.v, DWLive.VERSION)) {
					var n = t.errorMsg;
					It("".concat(n, "V").concat(t.lowVersion.v))
				} else if (t.newVersion && Yn(t.newVersion.v, DWLive.VERSION)) {
					var i = t.notify;
					kt("".concat(i, "。最新版本为V").concat(t.newVersion.v))
				} else;
			},
			isSupportFlash: function() {
				var e = !0;
				if (navigator.appVersion.indexOf("MSIE") >= 0) try {
					new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
				} catch (t) {
					e = !1
				} else navigator.plugins["Shockwave Flash"] || (e = !1);
				return e
			},
			sendAjax: function(e, t, n) {
				$.ajax({
					url: e,
					type: "GET",
					dataType: "jsonp",
					data: t,
					xhrFields: {
						withCredentials: !0
					},
					success: function(e) {
						"function" == typeof n ? n && n(e) : Pt(
							"onQuestionnairePublish is undefined")
					},
					error: function(e) {
						"function" == typeof n ? n({
							errorCode: 1,
							msg: "request error",
							result: e
						}) : Pt("onQuestionnairePublish is undefined")
					}
				})
			},
			handleTimeoutDomEle: function(e) {
				var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
					n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
				return '\n        <div id="ccTipsCountDown" class="'.concat(t ? "" : "has-container-bg",
						'">\n        <div class="has-bg-img" style="display: ').concat(t ? "" : "none",
						'">\n        ').concat(Xn.timeout(), " ").concat(e.day, " ").concat(Xn.day(), " ")
					.concat(e.h, " ").concat(Xn.hours(), " ").concat(e.m, " ").concat(Xn.monutes(), " ").concat(
						e.s, " ").concat(Xn.seconds(),
						'\n        </div>\n        <div class="not-bg-img" style="display: ').concat(t ?
						"none" : "", '">\n            <span class="timeout">').concat(n ? "" : Xn.timeout(),
						'</span>\n            <div class="not-bg-img-bottom">\n            <div class="time-block">\n                <p>'
						).concat(e.day,
						'</p>\n                <span>DAY</span>\n            </div>\n            <div class="time-circel">\n                <p></p>\n                <p></p>\n            </div>\n            <div class="time-block">\n                <p>'
						).concat(e.h,
						'</p>\n                <span>HOUR</span>\n            </div>\n            <div class="time-circel">\n                <p></p>\n                <p></p>\n            </div>\n            <div class="time-block">\n                <p>'
						).concat(e.m,
						'</p>\n                <span>MIN</span>\n            </div>\n            <div class="time-circel">\n                <p></p>\n                <p></p>\n            </div>\n            <div class="time-block">\n                <p>'
						).concat(e.s,
						"</p>\n                <span>SEC</span>\n            </div>\n            </div>\n        </div>\n        </div>  \n        "
						)
			},
			formartTime: function(e, t, n) {
				var i = e / 86400 > 99 ? 99 : Math.floor(e / 86400),
					r = Math.floor(e % 86400 / 3600),
					o = Math.floor(e % 86400 % 3600 / 60),
					a = Math.floor(e % 86400 % 3600 % 60),
					s = {
						day: this.handleTimeSupplement(i),
						h: this.handleTimeSupplement(r),
						m: this.handleTimeSupplement(o),
						s: this.handleTimeSupplement(a)
					};
				return this.handleTimeoutDomEle(s, t, n)
			},
			handleTimeSupplement: function() {
				var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
				return e ? e < 10 ? "0" + e : e : "00"
			},
			logger: function(e) {
				"string" != typeof e && (e = oe(e)), DWLive.debug && console.log("Livesdk: ".concat(e))
			},
			isQqBrowser: -1 !== navigator.userAgent.toLocaleLowerCase().indexOf("qqbrowser"),
			isWebWechat: navigator.userAgent.toLocaleLowerCase().indexOf("windowswechat") > -1 || navigator
				.userAgent.toLocaleLowerCase().indexOf("macwechat") > -1,
			isIosUc: !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) && navigator.userAgent.indexOf(
				"UCBrowser") > -1,
			isIosQuark: !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) && navigator.userAgent.indexOf(
				"Quark") > -1,
			isHarmony: navigator.userAgent.toLocaleLowerCase().indexOf("harmony") > -1,
			trim: function(e) {
				if ("string" == typeof e) return String.prototype.trim ? e.trim() : e.replace(/^\s+/, "")
					.replace(/\s+$/, "")
			}
		},
		ei = ee,
		ti = {},
		ni = q ? Object.defineProperties : function(e, t) {
			H(e);
			for (var n, i = U(t), r = i.length, o = 0; r > o;) Y.f(e, n = i[o++], t[n]);
			return e
		},
		ii = C.document,
		ri = ii && ii.documentElement,
		oi = N("IE_PROTO"),
		ai = function() {},
		si = function() {
			var e, t = z("iframe"),
				n = j.length;
			for (t.style.display = "none", ri.appendChild(t), t.src = "javascript:", (e = t.contentWindow.document)
				.open(), e.write("<script>document.F=Object<\/script>"), e.close(), si = e.F; n--;) delete si
				.prototype[j[n]];
			return si()
		},
		ci = Object.create || function(e, t) {
			var n;
			return null !== e ? (ai.prototype = H(e), n = new ai, ai.prototype = null, n[oi] = e) : n = si(),
				void 0 === t ? n : ni(n, t)
		},
		ui = T((function(e) {
			var t = k("wks"),
				n = C.Symbol,
				i = "function" == typeof n;
			(e.exports = function(e) {
				return t[e] || (t[e] = i && n[e] || (i ? n : W)("Symbol." + e))
			}).store = t
		})),
		di = Y.f,
		li = ui("toStringTag"),
		pi = function(e, t, n) {
			e && !v(e = n ? e : e.prototype, li) && di(e, li, {
				configurable: !0,
				value: t
			})
		},
		fi = {};
	ee(fi, ui("iterator"), (function() {
		return this
	}));
	var vi = function(e, t, n) {
			e.prototype = ci(fi, {
				next: Z(1, n)
			}), pi(e, t + " Iterator")
		},
		hi = N("IE_PROTO"),
		mi = Object.prototype,
		yi = Object.getPrototypeOf || function(e) {
			return e = p(e), v(e, hi) ? e[hi] : "function" == typeof e.constructor && e instanceof e.constructor ? e
				.constructor.prototype : e instanceof Object ? mi : null
		},
		gi = ui("iterator"),
		Ri = !([].keys && "next" in [].keys()),
		_i = "keys",
		wi = "values",
		Di = function() {
			return this
		},
		Ei = function(e, t, n, i, r, o, a) {
			vi(n, t, i);
			var s, c, u, d = function(e) {
					if (!Ri && e in v) return v[e];
					switch (e) {
						case _i:
						case wi:
							return function() {
								return new n(this, e)
							}
					}
					return function() {
						return new n(this, e)
					}
				},
				l = t + " Iterator",
				p = r == wi,
				f = !1,
				v = e.prototype,
				h = v[gi] || v["@@iterator"] || r && v[r],
				m = h || d(r),
				y = r ? p ? d("entries") : m : void 0,
				g = "Array" == t && v.entries || h;
			if (g && (u = yi(g.call(new e))) !== Object.prototype && u.next && pi(u, l, !0), p && h && h.name !==
				wi && (f = !0, m = function() {
					return h.call(this)
				}), a && (Ri || f || !v[gi]) && ee(v, gi, m), ti[t] = m, ti[l] = Di, r)
				if (s = {
						values: p ? m : d(wi),
						keys: o ? m : d(_i),
						entries: y
					}, a)
					for (c in s) c in v || ei(v, c, s[c]);
				else ne(ne.P + ne.F * (Ri || f), t, s);
			return s
		},
		Si = function(e) {
			return function(t, n) {
				var i, r, o = String(l(t)),
					a = w(n),
					s = o.length;
				return a < 0 || a >= s ? e ? "" : void 0 : (i = o.charCodeAt(a)) < 55296 || i > 56319 || a +
					1 === s || (r = o.charCodeAt(a + 1)) < 56320 || r > 57343 ? e ? o.charAt(a) : i : e ? o
					.slice(a, a + 2) : r - 56320 + (i - 55296 << 10) + 65536
			}
		}(!0);
	Ei(String, "String", (function(e) {
		this._t = String(e), this._i = 0
	}), (function() {
		var e, t = this._t,
			n = this._i;
		return n >= t.length ? {
			value: void 0,
			done: !0
		} : (e = Si(t, n), this._i += e.length, {
			value: e,
			done: !1
		})
	}));
	var Li = function(e, t) {
		return {
			value: t,
			done: !!e
		}
	};
	Ei(Array, "Array", (function(e, t) {
		this._t = g(e), this._i = 0, this._k = t
	}), (function() {
		var e = this._t,
			t = this._k,
			n = this._i++;
		return !e || n >= e.length ? (this._t = void 0, Li(1)) : Li(0, "keys" == t ? n : "values" == t ?
			e[n] : [n, e[n]])
	}), "values");
	ti.Arguments = ti.Array;
	for (var Ti = ui("toStringTag"), bi =
			"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList"
			.split(","), Oi = 0; Oi < bi.length; Oi++) {
		var Ci = bi[Oi],
			ki = C[Ci],
			Pi = ki && ki.prototype;
		Pi && !Pi[Ti] && ee(Pi, Ti, Ci), ti[Ci] = ti.Array
	}
	var Ii, Wi, Mi, Ni = ui("toStringTag"),
		xi = "Arguments" == m(function() {
			return arguments
		}()),
		Ai = function(e) {
			var t, n, i;
			return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof(n = function(e, t) {
					try {
						return e[t]
					} catch (e) {}
				}(t = Object(e), Ni)) ? n : xi ? m(t) : "Object" == (i = m(t)) && "function" == typeof t.callee ?
				"Arguments" : i
		},
		ji = function(e, t, n, i) {
			try {
				return i ? t(H(n)[0], n[1]) : t(n)
			} catch (t) {
				var r = e.return;
				throw void 0 !== r && H(r.call(e)), t
			}
		},
		Ui = ui("iterator"),
		Vi = Array.prototype,
		Bi = ui("iterator"),
		Fi = O.getIteratorMethod = function(e) {
			if (null != e) return e[Bi] || e["@@iterator"] || ti[Ai(e)]
		},
		Hi = T((function(e) {
			var t = {},
				n = {},
				i = e.exports = function(e, i, r, o, a) {
					var s, c, u, d, l, p = a ? function() {
							return e
						} : Fi(e),
						f = B(r, o, i ? 2 : 1),
						v = 0;
					if ("function" != typeof p) throw TypeError(e + " is not iterable!");
					if (void 0 === (l = p) || ti.Array !== l && Vi[Ui] !== l) {
						for (u = p.call(e); !(c = u.next()).done;)
							if ((d = ji(u, f, c.value, i)) === t || d === n) return d
					} else
						for (s = E(e.length); s > v; v++)
							if ((d = i ? f(H(c = e[v])[0], c[1]) : f(e[v])) === t || d === n) return d
				};
			i.BREAK = t, i.RETURN = n
		})),
		Gi = ui("species"),
		qi = function(e, t) {
			var n, i = H(e).constructor;
			return void 0 === i || null == (n = H(i)[Gi]) ? t : V(n)
		},
		Ji = function(e, t, n) {
			var i = void 0 === n;
			switch (t.length) {
				case 0:
					return i ? e() : e.call(n);
				case 1:
					return i ? e(t[0]) : e.call(n, t[0]);
				case 2:
					return i ? e(t[0], t[1]) : e.call(n, t[0], t[1]);
				case 3:
					return i ? e(t[0], t[1], t[2]) : e.call(n, t[0], t[1], t[2]);
				case 4:
					return i ? e(t[0], t[1], t[2], t[3]) : e.call(n, t[0], t[1], t[2], t[3])
			}
			return e.apply(n, t)
		},
		Qi = C.process,
		zi = C.setImmediate,
		$i = C.clearImmediate,
		Ki = C.MessageChannel,
		Xi = C.Dispatch,
		Yi = 0,
		Zi = {},
		er = "onreadystatechange",
		tr = function() {
			var e = +this;
			if (Zi.hasOwnProperty(e)) {
				var t = Zi[e];
				delete Zi[e], t()
			}
		},
		nr = function(e) {
			tr.call(e.data)
		};
	zi && $i || (zi = function(e) {
			for (var t = [], n = 1; arguments.length > n;) t.push(arguments[n++]);
			return Zi[++Yi] = function() {
				Ji("function" == typeof e ? e : Function(e), t)
			}, Ii(Yi), Yi
		}, $i = function(e) {
			delete Zi[e]
		}, "process" == m(Qi) ? Ii = function(e) {
			Qi.nextTick(B(tr, e, 1))
		} : Xi && Xi.now ? Ii = function(e) {
			Xi.now(B(tr, e, 1))
		} : Ki ? (Mi = (Wi = new Ki).port2, Wi.port1.onmessage = nr, Ii = B(Mi.postMessage, Mi, 1)) : C
		.addEventListener && "function" == typeof postMessage && !C.importScripts ? (Ii = function(e) {
			C.postMessage(e + "", "*")
		}, C.addEventListener("message", nr, !1)) : Ii = er in z("script") ? function(e) {
			ri.appendChild(z("script")).onreadystatechange = function() {
				ri.removeChild(this), tr.call(e)
			}
		} : function(e) {
			setTimeout(B(tr, e, 1), 0)
		});
	var ir = {
			set: zi,
			clear: $i
		},
		rr = ir.set,
		or = C.MutationObserver || C.WebKitMutationObserver,
		ar = C.process,
		sr = C.Promise,
		cr = "process" == m(ar);

	function ur(e) {
		var t, n;
		this.promise = new e((function(e, i) {
			if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor");
			t = e, n = i
		})), this.resolve = V(t), this.reject = V(n)
	}
	var dr = {
			f: function(e) {
				return new ur(e)
			}
		},
		lr = function(e) {
			try {
				return {
					e: !1,
					v: e()
				}
			} catch (e) {
				return {
					e: !0,
					v: e
				}
			}
		},
		pr = C.navigator,
		fr = pr && pr.userAgent || "",
		vr = function(e, t) {
			if (H(e), F(t) && t.constructor === e) return t;
			var n = dr.f(e);
			return (0, n.resolve)(t), n.promise
		},
		hr = ui("species"),
		mr = ui("iterator"),
		yr = !1;
	try {
		var gr = [7][mr]();
		gr.return = function() {
			yr = !0
		}, Array.from(gr, (function() {
			throw 2
		}))
	} catch (e) {}
	var Rr, _r, wr, Dr, Er = ir.set,
		Sr = function() {
			var e, t, n, i = function() {
				var i, r;
				for (cr && (i = ar.domain) && i.exit(); e;) {
					r = e.fn, e = e.next;
					try {
						r()
					} catch (i) {
						throw e ? n() : t = void 0, i
					}
				}
				t = void 0, i && i.enter()
			};
			if (cr) n = function() {
				ar.nextTick(i)
			};
			else if (!or || C.navigator && C.navigator.standalone)
				if (sr && sr.resolve) {
					var r = sr.resolve(void 0);
					n = function() {
						r.then(i)
					}
				} else n = function() {
					rr.call(C, i)
				};
			else {
				var o = !0,
					a = document.createTextNode("");
				new or(i).observe(a, {
					characterData: !0
				}), n = function() {
					a.data = o = !o
				}
			}
			return function(i) {
				var r = {
					fn: i,
					next: void 0
				};
				t && (t.next = r), e || (e = r, n()), t = r
			}
		}(),
		Lr = "Promise",
		Tr = C.TypeError,
		br = C.process,
		Or = br && br.versions,
		Cr = Or && Or.v8 || "",
		kr = C.Promise,
		Pr = "process" == Ai(br),
		Ir = function() {},
		Wr = _r = dr.f,
		Mr = !! function() {
			try {
				var e = kr.resolve(1),
					t = (e.constructor = {})[ui("species")] = function(e) {
						e(Ir, Ir)
					};
				return (Pr || "function" == typeof PromiseRejectionEvent) && e.then(Ir) instanceof t && 0 !== Cr
					.indexOf("6.6") && -1 === fr.indexOf("Chrome/66")
			} catch (e) {}
		}(),
		Nr = function(e) {
			var t;
			return !(!F(e) || "function" != typeof(t = e.then)) && t
		},
		xr = function(e, t) {
			if (!e._n) {
				e._n = !0;
				var n = e._c;
				Sr((function() {
					for (var i = e._v, r = 1 == e._s, o = 0, a = function(t) {
							var n, o, a, s = r ? t.ok : t.fail,
								c = t.resolve,
								u = t.reject,
								d = t.domain;
							try {
								s ? (r || (2 == e._h && Ur(e), e._h = 1), !0 === s ? n = i : (d && d
										.enter(), n = s(i), d && (d.exit(), a = !0)), n === t
									.promise ? u(Tr("Promise-chain cycle")) : (o = Nr(n)) ? o
									.call(n, c, u) : c(n)) : u(i)
							} catch (e) {
								d && !a && d.exit(), u(e)
							}
						}; n.length > o;) a(n[o++]);
					e._c = [], e._n = !1, t && !e._h && Ar(e)
				}))
			}
		},
		Ar = function(e) {
			Er.call(C, (function() {
				var t, n, i, r = e._v,
					o = jr(e);
				if (o && (t = lr((function() {
						Pr ? br.emit("unhandledRejection", r, e) : (n = C
							.onunhandledrejection) ? n({
							promise: e,
							reason: r
						}) : (i = C.console) && i.error && i.error(
							"Unhandled promise rejection", r)
					})), e._h = Pr || jr(e) ? 2 : 1), e._a = void 0, o && t.e) throw t.v
			}))
		},
		jr = function(e) {
			return 1 !== e._h && 0 === (e._a || e._c).length
		},
		Ur = function(e) {
			Er.call(C, (function() {
				var t;
				Pr ? br.emit("rejectionHandled", e) : (t = C.onrejectionhandled) && t({
					promise: e,
					reason: e._v
				})
			}))
		},
		Vr = function(e) {
			var t = this;
			t._d || (t._d = !0, (t = t._w || t)._v = e, t._s = 2, t._a || (t._a = t._c.slice()), xr(t, !0))
		},
		Br = function(e) {
			var t, n = this;
			if (!n._d) {
				n._d = !0, n = n._w || n;
				try {
					if (n === e) throw Tr("Promise can't be resolved itself");
					(t = Nr(e)) ? Sr((function() {
						var i = {
							_w: n,
							_d: !1
						};
						try {
							t.call(e, B(Br, i, 1), B(Vr, i, 1))
						} catch (e) {
							Vr.call(i, e)
						}
					})): (n._v = e, n._s = 1, xr(n, !1))
				} catch (e) {
					Vr.call({
						_w: n,
						_d: !1
					}, e)
				}
			}
		};
	Mr || (kr = function(e) {
			! function(e, t, n, i) {
				if (!(e instanceof t) || void 0 !== i && i in e) throw TypeError(n + ": incorrect invocation!")
			}(this, kr, Lr, "_h"), V(e), Rr.call(this);
			try {
				e(B(Br, this, 1), B(Vr, this, 1))
			} catch (e) {
				Vr.call(this, e)
			}
		}, (Rr = function(e) {
			this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this
				._n = !1
		}).prototype = function(e, t, n) {
			for (var i in t) n && e[i] ? e[i] = t[i] : ee(e, i, t[i]);
			return e
		}(kr.prototype, {
			then: function(e, t) {
				var n = Wr(qi(this, kr));
				return n.ok = "function" != typeof e || e, n.fail = "function" == typeof t && t, n
					.domain = Pr ? br.domain : void 0, this._c.push(n), this._a && this._a.push(n), this
					._s && xr(this, !1), n.promise
			},
			catch: function(e) {
				return this.then(void 0, e)
			}
		}), wr = function() {
			var e = new Rr;
			this.promise = e, this.resolve = B(Br, e, 1), this.reject = B(Vr, e, 1)
		}, dr.f = Wr = function(e) {
			return e === kr || e === Dr ? new wr(e) : _r(e)
		}), ne(ne.G + ne.W + ne.F * !Mr, {
			Promise: kr
		}), pi(kr, Lr),
		function(e) {
			var t = "function" == typeof O[e] ? O[e] : C[e];
			q && t && !t[hr] && Y.f(t, hr, {
				configurable: !0,
				get: function() {
					return this
				}
			})
		}(Lr), Dr = O.Promise, ne(ne.S + ne.F * !Mr, Lr, {
			reject: function(e) {
				var t = Wr(this);
				return (0, t.reject)(e), t.promise
			}
		}), ne(ne.S + !0 * ne.F, Lr, {
			resolve: function(e) {
				return vr(this === Dr ? kr : this, e)
			}
		}), ne(ne.S + ne.F * !(Mr && function(e, t) {
			if (!t && !yr) return !1;
			var n = !1;
			try {
				var i = [7],
					r = i[mr]();
				r.next = function() {
					return {
						done: n = !0
					}
				}, i[mr] = function() {
					return r
				}, e(i)
			} catch (e) {}
			return n
		}((function(e) {
			kr.all(e).catch(Ir)
		}))), Lr, {
			all: function(e) {
				var t = this,
					n = Wr(t),
					i = n.resolve,
					r = n.reject,
					o = lr((function() {
						var n = [],
							o = 0,
							a = 1;
						Hi(e, !1, (function(e) {
							var s = o++,
								c = !1;
							n.push(void 0), a++, t.resolve(e).then((function(e) {
								c || (c = !0, n[s] = e, --a || i(n))
							}), r)
						})), --a || i(n)
					}));
				return o.e && r(o.v), n.promise
			},
			race: function(e) {
				var t = this,
					n = Wr(t),
					i = n.reject,
					r = lr((function() {
						Hi(e, !1, (function(e) {
							t.resolve(e).then(n.resolve, i)
						}))
					}));
				return r.e && i(r.v), n.promise
			}
		}), ne(ne.P + ne.R, "Promise", {
			finally: function(e) {
				var t = qi(this, O.Promise || C.Promise),
					n = "function" == typeof e;
				return this.then(n ? function(n) {
					return vr(t, e()).then((function() {
						return n
					}))
				} : e, n ? function(n) {
					return vr(t, e()).then((function() {
						throw n
					}))
				} : e)
			}
		}), ne(ne.S, "Promise", {
			try: function(e) {
				var t = dr.f(this),
					n = lr(e);
				return (n.e ? t.reject : t.resolve)(n.v), t.promise
			}
		});
	var Fr = O.Promise,
		Hr = function(e, t) {
			return !!e && de((function() {
				t ? e.call(null, (function() {}), 1) : e.call(null)
			}))
		},
		Gr = un(2);
	Ie(Ie.P + Ie.F * !Hr([].filter, !0), "Array", {
		filter: function(e) {
			return Gr(this, e, arguments[1])
		}
	});
	var qr = ge.f,
		Jr = Function.prototype,
		Qr = /^\s*function ([^ (]*)/,
		zr = "name";
	zr in Jr || le && qr(Jr, zr, {
		configurable: !0,
		get: function() {
			try {
				return ("" + this).match(Qr)[1]
			} catch (e) {
				return ""
			}
		}
	});
	var $r = "\t\n\v\f\r   ᠎             　\u2028\u2029\ufeff",
		Kr = "[" + $r + "]",
		Xr = RegExp("^" + Kr + Kr + "*"),
		Yr = RegExp(Kr + Kr + "*$"),
		Zr = function(e, t, n) {
			var i = {},
				r = de((function() {
					return !!$r[e]() || "​" != "​" [e]()
				})),
				o = i[e] = r ? t(eo) : $r[e];
			n && (i[n] = o), Ie(Ie.P + Ie.F * r, "String", i)
		},
		eo = Zr.trim = function(e, t) {
			return e = String(je(e)), 1 & t && (e = e.replace(Xr, "")), 2 & t && (e = e.replace(Yr, "")), e
		},
		to = Zr,
		no = Object.keys || function(e) {
			return Sn(e, Ln)
		},
		ro = le ? Object.defineProperties : function(e, t) {
			ue(e);
			for (var n, i = no(t), r = i.length, o = 0; r > o;) ge.f(e, n = i[o++], t[n]);
			return e
		},
		oo = wn("IE_PROTO"),
		ao = function() {},
		so = function() {
			var e, t = ve("iframe"),
				n = Ln.length;
			for (t.style.display = "none", nn.appendChild(t), t.src = "javascript:", (e = t.contentWindow.document)
				.open(), e.write("<script>document.F=Object<\/script>"), e.close(), so = e.F; n--;) delete so
				.prototype[Ln[n]];
			return so()
		},
		co = Object.create || function(e, t) {
			var n;
			return null !== e ? (ao.prototype = ue(e), n = new ao, ao.prototype = null, n[oo] = e) : n = so(),
				void 0 === t ? n : ro(n, t)
		},
		uo = bn.f,
		lo = hn.f,
		po = ge.f,
		fo = to.trim,
		vo = "Number",
		ho = ae.Number,
		mo = ho,
		yo = ho.prototype,
		go = Me(co(yo)) == vo,
		Ro = "trim" in String.prototype,
		_o = function(e) {
			var t = me(e, !1);
			if ("string" == typeof t && t.length > 2) {
				var n, i, r, o = (t = Ro ? t.trim() : fo(t, 3)).charCodeAt(0);
				if (43 === o || 45 === o) {
					if (88 === (n = t.charCodeAt(2)) || 120 === n) return NaN
				} else if (48 === o) {
					switch (t.charCodeAt(1)) {
						case 66:
						case 98:
							i = 2, r = 49;
							break;
						case 79:
						case 111:
							i = 8, r = 55;
							break;
						default:
							return +t
					}
					for (var a, s = t.slice(2), c = 0, u = s.length; c < u; c++)
						if ((a = s.charCodeAt(c)) < 48 || a > r) return NaN;
					return parseInt(s, i)
				}
			}
			return +t
		};
	if (!ho(" 0o1") || !ho("0b1") || ho("+0x1")) {
		ho = function(e) {
			var t = arguments.length < 1 ? 0 : e,
				n = this;
			return n instanceof ho && (go ? de((function() {
				yo.valueOf.call(n)
			})) : Me(n) != vo) ? Rn(new mo(_o(t)), n, ho) : _o(t)
		};
		for (var wo, Do = le ? uo(mo) :
				"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger"
				.split(","), Eo = 0; Do.length > Eo; Eo++) De(mo, wo = Do[Eo]) && !De(ho, wo) && po(ho, wo, lo(mo,
			wo));
		ho.prototype = yo, yo.constructor = ho, Oe(ae, vo, ho)
	}
	var So = un(1);
	Ie(Ie.P + Ie.F * !Hr([].map, !0), "Array", {
		map: function(e) {
			return So(this, e, arguments[1])
		}
	});
	var Lo = function(e) {
			var t = e;
			t.socket.on("question", (function(e) {
				"function" == typeof DWLive.onQuestion && DWLive.onQuestion(e), "function" ==
					typeof DWLive.onQuestionSend && DWLive.onQuestionSend(e)
			})), t.socket.on("answer", (function(e) {
				"function" == typeof DWLive.onAnswer && DWLive.onAnswer(e), "function" == typeof DWLive
					.onAnswerSend && DWLive.onAnswerSend(e)
			}))
		},
		To = function(e) {
			var t = e;
			t.socket.on("chat_message", (function(e) {
				"function" == typeof DWLive.onPublicChatMessage && DWLive.onPublicChatMessage(e, "live")
			})), t.socket.on("chat_log_manage", (function(e) {
				"function" == typeof DWLive.onPublicChatLogManage && DWLive.onPublicChatLogManage(e)
			})), t.socket.on("notification", (function(e) {
				"function" == typeof DWLive.onNotification && DWLive.onNotification(e)
			})), t.socket.on("information", (function(e) {
				"function" == typeof DWLive.onInformation && DWLive.onInformation(e)
			})), t.socket.on("private_chat_self", (function(e) {
				"function" == typeof DWLive.onPrivateChatMessage && DWLive.onPrivateChatMessage(e)
			})), t.socket.on("private_chat", (function(e) {
				"function" == typeof DWLive.onPrivateAnswer && DWLive.onPrivateAnswer(e)
			})), t.socket.on("live_message", (function(e) {
				window.on_hd_text_live_message && "function" == typeof window.on_hd_text_live_message &&
					window.on_hd_text_live_message(e)
			})), t.socket.on("room_context", (function(e) {})), t.socket.on("custom_message", (function(e) {
				"function" == typeof DWLive.onCustomChatMessage && DWLive.onCustomChatMessage(e)
			}))
		},
		bo = {
			DocModeType: {
				NormalMode: 0,
				FreeMode: 1
			},
			isDPReady: !1,
			dpc: {},
			fastMode: !0,
			init: function() {
				this.dpc = new Dpc({
					roomId: DWLive.roomid,
					acountId: DWLive.userid,
					token: DWLive.token,
					type: 1,
					openWaterMark: Gt(DWLive.fileProcess, 10),
					roomWatermark: Gt(DWLive.standardWatermark, 10),
					roomType: "live"
				}), $("#drawPanel").css({
					height: "100%",
					width: "100%"
				})
			},
			appendDrawPanel: function() {
				var e =
					'<iframe id="dpa" allow-scripts allowfullscreen allowusermedia frameborder="0" style="width: 100%;height:100%;"></iframe>';
				qn() && (e =
						'<iframe id="dpa" allow-scripts allowfullscreen allowusermedia frameborder="0" style="width: 100%;height:100%;pointer-events: none;"></iframe>'
						), $("#drawPanel").append(e), "function" == typeof window.on_cc_live_db_flip && window
					.on_cc_live_db_flip()
			},
			destroy: function() {
				this.dpc && this.dpc.dispose && this.dpc.dispose(), $("#dpa").remove()
			},
			pageChange: function(e) {
				this.isDPReady && this.fastMode && this.dpc.pageChange(e)
			},
			animationChange: function(e) {
				this.isDPReady && this.fastMode && this.dpc.animationChange(e)
			},
			history: function(e) {
				this.isDPReady && this.fastMode && this.dpc.history(e)
			},
			draw: function(e) {
				this.isDPReady && this.fastMode && this.dpc.draw(e)
			},
			clear: function() {
				this.isDPReady && this.fastMode && this.dpc.clear()
			},
			reload: function() {
				this.isDPReady && this.fastMode && this.dpc.reload()
			},
			setDocMode: function(e) {
				this.isDPReady && this.fastMode && this.dpc.setFreeDocMode(e)
			},
			getDocs: function(e) {
				this.isDPReady && this.fastMode && this.dpc.getDocs(DWLive.roomid, DWLive.userid, e)
			},
			changePageTo: function(e, t) {
				this.isDPReady && this.fastMode && this.dpc.changePageTo(e, t)
			},
			showMarquee: function(e) {
				this.isDPReady && this.fastMode && this.dpc.openMarquee(e)
			},
			closeMarquee: function() {
				this.isDPReady && this.fastMode && this.dpc.closeMarquee()
			},
			openBarrage: function(e) {
				this.isDPReady && this.fastMode && this.dpc.openBarrage()
			},
			insertBarrage: function(e) {
				if (this.isDPReady && this.fastMode) {
					var t;
					try {
						t = JSON.parse(e)
					} catch (n) {
						t = {
							type: "text",
							content: e
						}
					}
					this.dpc.insertBarrage(t)
				}
			},
			closeBarrage: function() {
				this.isDPReady && this.fastMode && this.dpc.closeBarrage()
			},
			docAdapt: function(e) {
				if (this.isDPReady && this.fastMode) {
					var t = e ? "1" : "2";
					this.dpc.setDisplayMode(t)
				}
			}
		};
	window.DWDpc = bo;
	var Oo = {
		id: "drawPanel",
		isReady: !1,
		isProcessing: !1,
		getWidth: function() {
			return "100%"
		},
		getHeight: function() {
			return "100%"
		},
		swfUrl: "//zeus.csslcloud.net/flash/Player.swf",
		init: function() {
			null != navigator.userAgent.match(/iPad/i) && null != Gn().match(/iphone/i) && null != Gn()
				.match(/android/i) && null != navigator.userAgent.match(/Windows Phone/i) && (bo.fastMode ||
					swfobject.embedSWF(this.swfUrl, this.id, this.getWidth(), this.getHeight(), "10.0.0",
						"/flash/expressInstall.swf", {
							type: "drawpanel"
						}, {
							allowFullscreen: "true",
							allowScriptAccess: "always",
							wmode: "transparent"
						}, {}))
		},
		getSwf: function() {
			if (this.isReady) return swfobject.getObjectById(this.id)
		},
		clear: function() {
			var e = this.getSwf();
			e && (e._streamEnd(), Pusher.pagechangedata = [], Pusher.drawjson = [])
		},
		draw: function(e) {
			var t = this.getSwf();
			t && t.draw(e)
		},
		draws: function(e) {
			var t, n = this.getSwf();
			n && (t = e, setTimeout((function() {
				n.drawList(t)
			})))
		},
		filp: function(e) {
			var t = this.getSwf();
			if (t) {
				var n = DWLive.documentDisplayMode;
				this.displayMode = 1 == n ? "auto" : 2 == n ? "width" : "auto", void 0 !== live.adapt && (
					this.displayMode = live.adapt ? "auto" : "width");
				var i = JSON.parse(e),
					r = i.url;
				"https:" === window.location.protocol && (i.url = r.replace(/http:/g, "https:")), t.filp(oe(
					i), this.displayMode)
			}
		},
		animationFilp: function(e) {
			var t = this.getSwf();
			t && t.animation(e)
		},
		barrage: function(e) {
			e && this.getSwf() && this.getSwf()._jsTOASbarrage && this.getSwf()._jsTOASbarrage(e)
		},
		showMarquee: function(e) {
			e && this.getSwf() && this.getSwf().showMarqueeLight(e)
		}
	};
	window.DrawPanel = Oo;
	var Co = "//view.csslcloud.net",
		ko = function() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
				t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
			n.type = (n.type || "GET").toUpperCase(), n.dataType = n.dataType, n.async = n.async || !0, n.token = n
				.token || "";
			var i, r = n.params;
			if ((i = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"))
				.onreadystatechange = function() {
					if (4 === i.readyState) {
						var t = i.status;
						if (t >= 200 && t < 300 ? n.success && n.success(i.responseText, i.responseXML) : n.fail &&
							n.fail(t), e.includes("/live/data") && DWLive) {
							var r = i.getResponseHeader("Date");
							DWLive.timedifference = new Date(r).getTime() - (new Date).getTime()
						}
					}
				}, "GET" === n.type) {
				if (Bn(t)) i.open("GET", e, n.async);
				else {
					var o = Hn(t);
					i.open("GET", e + "?" + o, n.async)
				}
				n.dataType && "JSON" === n.dataType.toUpperCase() ? i.setRequestHeader("Content-Type",
						"application/json") : i.setRequestHeader("Content-Type",
						"application/x-www-form-urlencoded"), n.token && i.setRequestHeader("X-HD-Token", n.token),
					i.send(null)
			} else if ("POST" === n.type) {
				var a = oe(t);
				if (r) {
					var s = Hn(r);
					e = e + "?" + s
				}
				i.open("POST", e, n.async), n.dataType && "JSON" === n.dataType.toUpperCase() ? i.setRequestHeader(
						"Content-Type", "application/json") : i.setRequestHeader("Content-Type",
						"application/x-www-form-urlencoded"), n.token && i.setRequestHeader("X-HD-Token", n.token),
					n.interactionToken && i.setRequestHeader("interactive-token", n.interactionToken), i.send(a)
			}
		},
		Po = "4.0.0",
		Io = "h5-pc",
		Wo = 0,
		Mo = 1,
		No = 1e3,
		xo = "获取线路异常,请刷新重试～",
		Ao = "获取直播间信息异常,请刷新重试～",
		jo = function() {
			function e(t) {
				o(this, e), this.catonCount = 0, this.catonDuration = 0, this.catonTime = 0, this.ccTrackCount = 0,
					this.ccTrackDurationCount = 0, this.ccTrackHeartbeatCount = 0, this.isCaton = !1, this
					.isFrist = !0, this.ccTrackTiming = 0, this.isEnd = !1, this.ccTrack = window.ccTrack, this
					.videoId = t && t.videoId || "#ccVideoPlayer", this.isVideoPreload = !0, this
					.videoPreloadStart = 0, this.ccTrackTimer = null, this.ccTrackStream = "", this.HEART_BEAT =
					6e4, this.mediaType = null, this.videoIsWaiting = !1, this.videoWaitingStartTime = 0, this
					.videoWaitingDuration = 0, this.init()
			}
			return s(e, [{
				key: "setUrl",
				value: function(e, t) {
					if (e && !(e.length <= 0)) {
						this.ccTrackStream = e, this.mediaType = t;
						var n = /^http(s)?:\/\/(.*?)\//;
						t && "rts" === t ? (n = /^artc:\/\/(.*?)\//).exec(e) && (this.ccTrackCDN = n
							.exec(e)[1]) : n.exec(e) && (this.ccTrackCDN = n.exec(e)[2])
					}
				}
			}, {
				key: "end",
				value: function() {
					this.isEnd = !0
				}
			}, {
				key: "init",
				value: function() {
					this.ccTrack && (this.traggerHeartBeat(), this.monitors())
				}
			}, {
				key: "monitors",
				value: function(e) {
					var t = this,
						n = $(this.videoId)[0];
					n && (n.addEventListener("error", (function(e) {
						var n = DWLive.firstplay ? Gt(((new Date).getTime() - DWLive
							.firstplayTime) / 1e3) : 0;
						DWLive.handleTrack({
							event: "play",
							code: 400,
							rid: (new Date).getTime(),
							firstplay: DWLive.firstplay,
							livestatus: DWLive.livestatus,
							roomviewingmode: DWLive.roomviewingmode,
							viewingmode: DWLive.viewingmode,
							speakingmode: DWLive.speakingmode,
							relativetime: n,
							url: t.ccTrackStream,
							streamtype: t.mediaType
						})
					})), n.addEventListener("loadstart", (function(e) {
						t.isVideoPreload && (t.videoPreloadStart = (new Date)
							.getTime(), t.isVideoPreload = !1)
					})), n.addEventListener("loadedmetadata", (function(e) {
						DWLive.handleTrack({
							event: "videoPlayStatus",
							code: 200,
							data: {
								type: "loadedmetadata",
								time: (new Date).getTime()
							}
						})
					})), n.addEventListener("waiting", (function() {
						DWLive.firstplay && (t.catonCount = t.catonCount + 1, t
							.isCaton = !0, t.isCaton && (t.catonTime = (
								new Date).getTime())), DWLive.handleTrack({
							event: "videoPlayStatus",
							code: 200,
							data: {
								type: "waiting",
								time: (new Date).getTime()
							}
						}), t.videoIsWaiting = !0, t.videoWaitingStartTime = (
							new Date).getTime()
					})), n.addEventListener("playing", (function() {
						if (DWLive.firstplay) DWLive.handleTrack({
							event: "videoPlayStatus",
							code: 200,
							data: {
								type: "playing",
								time: (new Date).getTime()
							}
						});
						else {
							DWLive.firstplay = 1, DWLive.firstplayTime = (new Date)
								.getTime();
							var e = DWLive.firstplayTime - t.videoPreloadStart,
								n = DWLive.firstplay ? Gt(((new Date).getTime() -
									DWLive.firstplayTime) / 1e3) : 0;
							DWLive.handleTrack({
								event: "play",
								et: e,
								code: 200,
								rid: (new Date).getTime(),
								firstplay: DWLive.firstplay,
								livestatus: DWLive.livestatus,
								roomviewingmode: DWLive.roomviewingmode,
								viewingmode: DWLive.viewingmode,
								speakingmode: DWLive.speakingmode,
								relativetime: n,
								url: t.ccTrackStream,
								streamtype: t.mediaType
							})
						}
						t.videoIsWaiting && (t.videoWaitingDuration = (new Date)
							.getTime() - t.videoWaitingStartTime, DWLive
							.handleTrack({
								event: "stuck",
								code: 200,
								blockduration: t.videoWaitingDuration,
								url: t.ccTrackStream,
								streamtype: t.mediaType
							}), t.videoIsWaiting = !1, t.videoWaitingStartTime =
							0, t.videoWaitingDuration = 0)
					})), n.addEventListener("canplay", (function() {
						DWLive.firstplay && t.isCaton && (t.isCaton = !1, 0 === t
							.catonCount ? (t.catonCount = t.catonCount + 1, t
								.catonDuration = t.catonDuration + ((new Date)
									.getTime() - t.ccTrackTiming)) : t
							.catonDuration = t.catonDuration + ((new Date)
								.getTime() - t.catonTime)), DWLive.handleTrack({
							event: "videoPlayStatus",
							code: 200,
							data: {
								type: "canplay",
								time: (new Date).getTime()
							}
						})
					}), !1), n.addEventListener("ended", (function() {
						t.isEnd = !0, DWLive.firstplay = 0, DWLive.firstplayTime =
							0, t.ccTrackTimer && clearInterval(t.ccTrackTimer)
					}), !1))
				}
			}, {
				key: "traggerHeartBeat",
				value: function() {
					var e = this;
					this.ccTrackTimer && (clearInterval(this.ccTrackTimer), this.ccTrackTimer =
						null);
					var t = DWLive.heartInterval / 1e3;
					this.ccTrackTimer = setInterval((function() {
						0 === DWLive.livestatus && (DWLive.firstplay = 0, DWLive
								.firstplayTime = 0), e.ccTrackCount = e.ccTrackCount +
							1, e.isCaton && (e.catonDuration = e.catonDuration + ((
								new Date).getTime() - e.catonTime)), (e.catonDuration >
								12e3 || e.catonCount > 4) && window.live_play_caton &&
							window.live_play_caton(), e.catonDuration >= e.HEART_BEAT &&
							(e.isCaton = !1), e.ccTrackTiming = (new Date).getTime();
						var n = DWLive.firstplay ? Gt(((new Date).getTime() - DWLive
							.firstplayTime) / 1e3) : 0;
						if (e.ccTrackCount % t == 0) {
							e.ccTrackDurationCount++;
							var i = 1 === DWLive.livestatus;
							"1" !== DWLive.userType && i && DWLive.handleTrack({
								event: "duration",
								code: 200,
								blocktimes: e.catonCount,
								blockduration: e.catonDuration >= e.HEART_BEAT ?
									0 : e.catonDuration,
								num: e.ccTrackDurationCount,
								heartinter: t,
								cdn: e.ccTrackCDN,
								livestatus: DWLive.livestatus,
								roomviewingmode: DWLive.roomviewingmode,
								viewingmode: DWLive.viewingmode,
								speakingmode: DWLive.speakingmode,
								relativetime: n,
								firstplay: DWLive.firstplay,
								livestarttime: DWLive.firstplayTime,
								is_low_delay: DWLive.rtsFlag,
								scene_type: 0,
								username: DWLive.viewername ? DWLive
									.viewername : "",
								useravatar: DWLive.wechatHead ? DWLive
									.wechatHead : ""
							})
						}
						if (e.ccTrackCount % 60 == 0) {
							e.ccTrackHeartbeatCount++;
							var r = oe(DWLive.m3u8);
							DWLive.m3u8 = {}, DWLive.handleTrack({
								event: "heartbeat",
								code: 200,
								blocktimes: e.catonCount,
								blockduration: e.catonDuration >= e.HEART_BEAT ?
									0 : e.catonDuration,
								num: e.ccTrackHeartbeatCount,
								heartinter: 60,
								cdn: e.ccTrackCDN,
								livestatus: DWLive.livestatus,
								roomviewingmode: DWLive.roomviewingmode,
								viewingmode: DWLive.viewingmode,
								speakingmode: DWLive.speakingmode,
								relativetime: n,
								firstplay: DWLive.firstplay,
								livestarttime: DWLive.firstplayTime,
								is_low_delay: DWLive.rtsFlag,
								pusherMsg: {
									serverDomain: DWLive.socketDomain,
									msgCount: DWLive.reportRule
								},
								pull_stream_url: e.ccTrackStream,
								pull_stream_protocol_type: "",
								username: DWLive.viewername ? DWLive
									.viewername : "",
								useravatar: DWLive.wechatHead ? DWLive
									.wechatHead : "",
								definition: 0,
								resolution: "",
								data: {
									m3u8: r
								}
							}), ie(DWLive.reportRule).forEach((function(e) {
								DWLive.reportRule[e] = 0
							})), e.catonCount = 0, e.catonDuration = 0
						}
					}), 1e3)
				}
			}]), e
		}();
	var Uo = function(e, t) {
			if (e) {
				var n = e + "?" + function(e) {
					var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
						n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
					for (var i in e) t[n++] = [i, e[i]];
					return new URLSearchParams(t).toString()
				}(t);
				return fetch(n, {
					method: "GET"
				})
			}
			console.warning("no url parameter")
		},
		Vo = function(e, t, i, r, o) {
			if (this.URL = location.protocol + "//report.csslcloud.net/", this.param = {
					userid: e.userId,
					roomid: e.roomId,
					viewerid: e.viewerId,
					upid: e.upId,
					terminal: t,
					ua: i
				}, this.isReplay = !1, o || 1 == o ? (this.isReplay = o, this.param.liveid = e.liveId) : this.param
				.recordid = e.recordId, this.timeIntervalId = 0, this.postURL = "", this.playAddr = this.isReplay ?
				"report/live/play" : "report/replay/play", this.heartbeatAddr = this.isReplay ?
				"report/live/heartbeat" : "report/replay/heartbeat", this.logInAddr = this.isReplay ?
				"report/live/login" : "report/replay/login", this.video = null, this.count = 0, "object" == n(r) &&
				"null" != typeof r && r) {
				this.video = r;
				var a = !0,
					s = this,
					c = !1;
				r.addEventListener("play", (function() {
					a && (a = !1, s.addr(s.playAddr), s.setParam("result", 0), s.send(), s.deleteKey(
						"result"), s.count = 0), s.addr(s.heartbeatAddr), s.startTimer(), s.log(
						"播放开始 开始发送")
				})), r.addEventListener("waiting", (function() {
					c || (s.log("播放卡顿"), s.count++)
				})), r.addEventListener("ended", (function() {
					s.log("播放结束"), s.stopTimer(), a = !0
				})), r.addEventListener("seeking", (function() {
					c = !0
				})), r.addEventListener("seeked", (function() {
					c = !1
				})), r.addEventListener("error", (function() {
					a && (a = !1, s.addr(s.playAddr), s.setParam("result", 1), s.send()), s.stopTimer(),
						s.log("播放错误")
				}))
			}
			this.startTimer = function() {
				if (0 == this.timeIntervalId) {
					var e = this;
					this.timeIntervalId = setInterval((function() {
						e.setParam("vdrop", "-1"), e.setParam("avgbytes", "-1"), e.setParam("block",
							e.count), e.send(), e.count = 0, e.log("发送心跳信息")
					}), 1e4)
				}
			}, this.log = function(e) {}, this.addr = function(e) {
				this.postURL = this.URL + e
			}, this.stopTimer = function() {
				0 != this.timeIntervalId && (clearInterval(this.timeIntervalId), this.timeIntervalId = 0)
			}, this.deleteKey = function(e) {
				this.param[e] && delete this.param[e]
			}, this.setParam = function(e, t) {
				this.param[e] = t
			}, this.getRam = function() {
				return (new Date).getTime()
			}, this.send = function() {
				this.log("发送信息");
				var e = this;
				e.param.time = e.getRam(), Uo(e.postURL, e.param).then((function() {}))
			}, this.addr(this.logInAddr), this.send()
		},
		Bo = {
			docDelayTime: null,
			audioStreamsInfo: [],
			videoStreamsInfo: {},
			mediaType: "flv",
			endTimer: null,
			liveIsEnd: 0,
			rtsNonSupport: !0,
			isIosUc: !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) && navigator.userAgent.indexOf(
				"UCBrowser") > -1,
			isIosQuark: !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) && navigator.userAgent.indexOf(
				"Quark") > -1,
			mediaInfo: {
				videoSrc: null,
				type: null,
				audios: null,
				videoStreams: null
			},
			report: null,
			initReport: function() {
				DWLive.liveId && (Bo.reportLog || (Bo.reportLog = new Vo({
					userId: DWLive.userid,
					roomId: DWLive.roomid,
					viewerId: DWLive.viewerid,
					upId: DWLive.upid,
					liveId: DWLive.liveId
				}, 0, 1, $("#ccVideoPlayer")[0], !0)))
			},
			getPlayStatus: function(e) {
				var t = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						sessionId: DWLive.token,
						tpl: DWLive.tpl,
						deviceType: Io,
						deviceVersion: Po,
						terminal: 3
					},
					n = {};
				! function(e, t) {
					ko("".concat(Co, "/api/live/record"), e, t)
				}(t, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						var i, r, o = JSON.parse(t);
						if (o && o.success && o.data) switch (null === (i = o.data) || void 0 === i ||
							null === (r = i.live) || void 0 === r ? void 0 : r.status) {
							case Wo:
								Bo.createPlayer(null, null, "live_waiting");
								break;
							case Mo:
								DWLive.player && (DWLive.player.destroy(), DWLive.player = null), Bo
									.getPlayUrl()
						}
						e && "function" == typeof e && e(n)
					},
					fail: function(t) {
						n = {
							success: !1,
							error: t || ""
						}, e && "function" == typeof e && e(n)
					}
				})
			},
			getPlayUrl: function(e, t, n) {
				var i;
				e ? Bo.mediaType = e : Bo.checkMediaType();
				var r = Bo.mediaType,
					o = (c(i = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						types: r,
						sessionId: DWLive.token,
						terminal: 0,
						tpl: DWLive.tpl,
						deviceType: Io,
						deviceVersion: Po
					}, "terminal", 3), c(i, "streamSource", DWLive.viewStreamSource || 0), c(i, "streamId",
						t || DWLive.streamId), i),
					a = {};
				! function(e, t) {
					ko("".concat(Co, "/api/live/play"), e, t)
				}(o, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						var t = JSON.parse(e);
						t && t.success && t.data && (DWLive.viewingmode = t.data.stream[0].viewMode,
							"rts" === r ? setTimeout((function() {
								Bo.filterStreamData(t.data.stream)
							}), 2e3) : Bo.filterStreamData(t.data.stream), DWLive.livestatus =
							DWLive.liveId ? 1 : 0)
					},
					fail: function(e) {
						DWLive.livestatus = 1e3, a = {
							success: !1,
							error: e || ""
						}, n && "function" == typeof n && n(a)
					}
				})
			},
			getWarmVideo: function(e) {
				var t = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						terminal: 3,
						tpl: DWLive.tpl
					},
					n = {};
				! function(e, t) {
					ko("".concat(Co, "/live/plus/warm/play"), e, t)
				}(t, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						var i = JSON.parse(t);
						t && i.success && i.data ? (n = {
							success: !0,
							video: i.data.video[0].primary,
							cover: i.data.cover
						}, DWLive.warmVideo = n) : n = {
							success: !1,
							error: i.error || ""
						}, e && "function" == typeof e && e(n)
					},
					fail: function(t) {
						n = {
							success: !1,
							error: t || ""
						}, e && "function" == typeof e && e(n)
					}
				})
			},
			filterStreamData: function(e) {
				if (!(e.length <= 0)) {
					var t = e[0];
					Bo.audioStreamsInfo = t.audios, Bo.docDelayTime = t.docDelayTime, DWLive.docDelayTime = t
						.docDelayTime;
					var n = t.videos;
					n.forEach((function(e) {
							Bo.videoStreamsInfo[e.quality] = e.videoStream
						})), Bo.mediaInfo.videoSrc = Bo.videoStreamsInfo[0][0], Bo.mediaInfo.type = Bo
						.mediaType, Bo.mediaInfo.audios = Bo.audioStreamsInfo, Bo.mediaInfo.videoStreams = Bo
						.videoStreamsInfo, Bo.resetPlayer();
					var i = DWLive.player.getCurrentQualityCode(),
						r = JSON.parse(oe(n)).map((function(e) {
							return {
								desc: e.desc,
								quality: e.quality,
								active: i === e.quality
							}
						}));
					DWLive.onHDReceivedVideoQuality && DWLive.onHDReceivedVideoQuality(r), window._swfOk(),
						DWLive.onLiveStarting && DWLive.onLiveStarting(), DWLive.on_hd_live_player_type &&
						DWLive.on_hd_live_player_type("h5"), DWLive.ccTrackLog || (DWLive.ccTrackLog =
						new jo({})), DWLive.ccTrackLog.setUrl(Bo.mediaInfo.videoSrc, Bo.mediaType)
				}
			},
			initMonitors: function() {
				DWLive.on_live_start = function(e) {
					var t = e.room.settings.viewMode;
					if (DWLive.roomviewingmode = t, DWLive.viewMode = t, Bo.liveIsEnd = 0, DWLive
						.livestatus = 1, Bo.endTimer && (clearTimeout(Bo.endTimer), Bo.endTimer = null),
						1 !== DWLive.isMultiStream || DWLive.firstMultiStreamStatus) Bo.checkLiveStatus();
					else {
						DWLive.player && DWLive.player.setPlayStatus({
							isShow: !0,
							msg: "等待中"
						})
					}
				}, DWLive.on_live_end = function(e) {
					DWLive.livestatus = 0, DWLive.liveId = null, Bo.liveIsEnd = 1, Bo.mediaInfo = {}, e ? Bo
						.end(e, "stu") : Bo.createPlayer(null, null, "live_end"), Bo.endTimer && (
							clearTimeout(Bo.endTimer), Bo.endTimer = null), Bo.endTimer = setTimeout((
							function() {
								DWLive.warmVideoId && "2BBA984E86119800" !== DWLive.warmVideoId ? Bo
									.toGetWarmVideo(Bo.liveIsEnd) : Bo.createPlayer(null, null,
										"live_waiting", Bo.liveIsEnd), clearTimeout(Bo.endTimer), Bo
									.endTimer = null
							}), 15e3)
				}, DWLive.on_live_isBan = function(e) {
					DWLive.isBan = 1, Bo.checkLiveStatus()
				}, DWLive.on_live_isUnBan = function(e) {
					DWLive.isBan = 0, Bo.checkLiveStatus()
				}, DWLive.on_rts_nonsupport = function(e) {
					Bo.rtsNonSupport && (Bo.rtsNonSupport = !1, DWLive.player && (DWLive.player.destroy(),
							DWLive.player = null), qn() ? Bo.mediaType = "hls" : Bo.mediaType = "flv",
						Bo.getPlayUrl(Bo.mediaType, void 0, (function(e) {
							Bo.initDefaultErrorPlayer(xo)
						})))
				}
			},
			initPlayerMonitors: function() {
				DWLive.player.on("rts_nonsupport", (function(e) {
					window.rtc ? rtc.getMediaInfo("hls") : DWLive.on_rts_nonsupport && "function" ==
						typeof DWLive.on_rts_nonsupport && DWLive.on_rts_nonsupport(
							"rts_nonsupport")
				})), DWLive.player.on("canplay", (function() {
					window.cc_hd_player_canplay && window.cc_hd_player_canplay(), window
						.cc_on_player_init_canplay && window.cc_on_player_init_canplay()
				})), DWLive.player.on("destroy", (function(e) {
					Bo.reportLog && Bo.reportLog.stopTimer(), Bo.reportLog = null
				})), DWLive.player.on("error", (function(e) {
					1 !== DWLive.isMultiStream || DWLive.firstMultiStreamStatus || Bo.dispatchEvent(
						"playerOnError")
				})), DWLive.player.on("cc_player_stream_disconnect", (function(e) {
					var t = {
						isShow: !0,
						msg: e && e.msg || "资源请求出错，请刷新页面重试"
					};
					DWLive.player && DWLive.player.setPlayStatus(t)
				})), DWLive.player.on("hlsError", (function(e) {
					if (e && e.type) switch (e.type) {
						case window.Hls.ErrorTypes.NETWORK_ERROR:
							DWLive.handleTrack({
								event: "hlsError",
								code: 400,
								data: {
									type: "NETWORK_ERROR",
									detail: oe(e.details)
								}
							});
							break;
						case window.Hls.ErrorTypes.MEDIA_ERROR:
							DWLive.handleTrack({
								event: "hlsError",
								code: 400,
								data: {
									type: "MEDIA_ERROR",
									detail: oe(e.details)
								}
							});
							break;
						default:
							DWLive.handleTrack({
								event: "hlsError",
								code: 400,
								data: {
									type: "未知错误",
									detail: oe(e.details)
								}
							})
					}
				})), DWLive.player.on("quality_start", (function(e) {
					DWLive._currentQualityCode = e;
					var t = DWLive.player && DWLive.player.options.video && DWLive.player.options
						.video.url;
					DWLive.ccTrackLog.setUrl(t, Bo.mediaType)
				})), DWLive.player.on("line_start", (function(e) {
					DWLive._currentLineIndex = e, DWLive.onChangeLine && "function" == typeof DWLive
						.onChangeLine && DWLive.onChangeLine(e);
					var t = DWLive.player && DWLive.player.options.video && DWLive.player.options
						.video.url,
						n = "user" === DWLive._changeLineOpt ? "user" : "auto";
					DWLive.handleTrack({
						event: "change_play_url",
						code: 200,
						url: t,
						streamtype: Bo.mediaType,
						opttype: n
					}), DWLive.ccTrackLog.setUrl(t, Bo.mediaType), DWLive._changeLineOpt = null
				})), DWLive.player.on("hlsPlaylistProcessed", (function(e) {
					ie(DWLive.m3u8) >= 60 && (DWLive.m3u8 = {});
					var t = (new Date).getTime();
					DWLive.m3u8[t] = e
				}))
			},
			checkMediaType: function() {
				qn() ? (Bo.mediaType = "hls", 1 !== DWLive.rtsFlag || Bo.isIosUc || Bo.isIosQuark || (Bo
						.mediaType = "rts")) : Bo.mediaType = "flv", 1 !== DWLive.viewMode || Bo.isIosUc || Bo
					.isIosQuark || (Bo.mediaType = "rts")
			},
			checkLiveStatus: function(e) {
				switch (DWLive.livestatus) {
					case Wo:
						if (DWLive.isBan) return void Bo.isBan();
						DWLive.warmVideoId && DWLive.warmVideoId.length > 0 && "2BBA984E86119800" !== DWLive
							.warmVideoId && !DWLive.liveCountdown ? Bo.toGetWarmVideo() : Bo.createPlayer(null,
								null, "live_waiting");
						break;
					case Mo:
						if (DWLive.isBan) return void Bo.isBan();
						if (DWLive.player && (DWLive.player.destroy(), DWLive.player = null), 1 === DWLive
							.rtcMode) return;
						Bo.getPlayUrl(void 0, e, (function(e) {
							Bo.initDefaultErrorPlayer(xo)
						}));
						break;
					case No:
						Bo.initDefaultErrorPlayer(Ao)
				}
			},
			isBan: function() {
				DWLive.player && (DWLive.player.destroy(), DWLive.player = null), Bo.createPlayer(null, null,
					"live_ban")
			},
			toGetWarmVideo: function(e) {
				1 !== DWLive.livestatus && Bo.getWarmVideo((function(t) {
					if (t && t.success) {
						if (1 === DWLive.livestatus) return;
						Bo.createPlayer("auto", t.video, "live_warm")
					} else Bo.createPlayer(null, null, "live_waiting", e)
				}))
			},
			createPlayer: function(e, t, n, i) {
				DWLive.player && (DWLive.player.destroy(), DWLive.player = null);
				var r = "",
					o = 1;
				DWLive.videoLogo && DWLive.videoLogo.img && (r = DWLive.videoLogo.img, o = DWLive.videoLogo
					.position);
				var a = DWLive.liveCountdown;
				(i || 1 === DWLive.livestatus) && (a = 0);
				var s = setInterval((function() {
					var i = document.getElementById("livePlayer");
					if (i) {
						clearInterval(s), s = null;
						var c = {
							debugger: !1,
							container: i,
							autoplay: !0,
							controller: DWLive.controller || !1,
							loop: "live_warm" === n,
							countdown: a,
							backgroundImageUri: DWLive.backgroundImageUri && DWLive
								.backgroundImageUri.length > 0 ? DWLive.backgroundImageUri :
								null,
							backgroundHint: DWLive.backgroundHint && DWLive.backgroundHint
								.length > 0 ? DWLive.backgroundHint : null,
							live: !0,
							playStatus: !0,
							preload: !0,
							marquee: DWLive.marquee,
							barrage: DWLive.barrageData,
							lang: "zh" === DWLive.language ? "zh-cn" : DWLive.language,
							currentQualityCode: DWLive._currentQualityCode,
							currentLineIndex: DWLive._currentLineIndex,
							volume: DWLive.volume,
							video: {
								type: e || "",
								url: t || ""
							},
							logoUrl: r,
							logoPosition: o
						};
						"stream" === e && (c.video.stream = t), DWLive.player = new ccPlayer(c),
							n && Bo.traggerCheckPlayStatusInfo(n), Bo.initReport(), "function" ==
							typeof DWLive.onPlayerReady && DWLive.onPlayerReady(), Bo
							.initPlayerMonitors()
					}
				}), 300)
			},
			resetPlayer: function() {
				if (DWLive.player) DWLive.player.switchVideo({
					url: Bo.mediaInfo.videoSrc,
					type: Bo.mediaInfo.type
				}, {
					video: {
						url: Bo.mediaInfo.videoSrc,
						type: Bo.mediaInfo.type
					},
					videoStreamsInfo: Bo.mediaInfo.videoStreams,
					audioStreamsInfo: Bo.mediaInfo.audios,
					volume: DWLive.volume
				});
				else {
					var e = "",
						t = 1;
					DWLive.videoLogo && DWLive.videoLogo.img && (e = DWLive.videoLogo.img, t = DWLive.videoLogo
							.position), DWLive.player = new ccPlayer({
							debugger: !1,
							container: document.getElementById("livePlayer"),
							autoplay: !0,
							controller: DWLive.controller || !1,
							live: !0,
							marquee: DWLive.marquee,
							barrage: DWLive.barrageData,
							countdown: DWLive.liveCountdown,
							backgroundImageUri: DWLive.backgroundImageUri && DWLive.backgroundImageUri
								.length > 0 ? DWLive.backgroundImageUri : null,
							backgroundHint: DWLive.backgroundHint && DWLive.backgroundHint.length > 0 ?
								DWLive.backgroundHint : null,
							preload: !0,
							lang: "zh" === DWLive.language ? "zh-cn" : DWLive.language,
							currentQualityCode: DWLive._currentQualityCode,
							currentLineIndex: DWLive._currentLineIndex,
							volume: DWLive.volume,
							video: {
								type: Bo.mediaInfo && Bo.mediaInfo.type || "",
								url: Bo.mediaInfo && Bo.mediaInfo.videoSrc || ""
							},
							videoStreamsInfo: Bo.mediaInfo && Bo.mediaInfo.videoStreams || {},
							audioStreamsInfo: Bo.mediaInfo && Bo.mediaInfo.audios || [],
							logoUrl: e,
							logoPosition: t
						}), Bo.initReport(), "function" == typeof DWLive.onPlayerReady && DWLive
					.onPlayerReady(), Bo.initPlayerMonitors()
				}
				Bo.traggerCheckPlayStatusInfo("live_start")
			},
			traggerCheckPlayStatusInfo: function(e) {
				var t = {
						isShow: "live_start" !== e && "live_warm" !== e,
						msg: e
					},
					n = DWLive.player;
				n && n.setPlayStatus(t)
			},
			end: function(e, t) {
				if (DWLive.player && (DWLive.player.destroy(), DWLive.player = null), e) try {
					if ((e = JSON.parse(e)) && e.msg && e.msg.tips) {
						var n = null;
						"assistant" === t && (n = e.msg.tips.assistant), "stu" === t && (n = e.msg.tips
							.stu), "host" === t && (n = e.msg.tips.host), "publisher" === t && (n = e.msg
								.tips.publisher);
						var i = e.msg.tips.pool[n];
						i ? Bo.createPlayer(null, null, i) : Bo.createPlayer(null, null, "live_end")
					}
				} catch (e) {} else Bo.createPlayer(null, null, "live_end")
			},
			initDefaultErrorPlayer: function(e) {
				DWLive.player && (DWLive.player.destroy(), DWLive.player = null), Bo.createPlayer(null, null, e)
			},
			dispatchEvent: function(e) {
				var t = new CustomEvent(e);
				window.dispatchEvent(t)
			}
		},
		Fo = {
			isPublishing: 0,
			delay: 0,
			isInitMonitore: !1,
			init: function() {
				if (Fo.isInitMonitore || (Bo.initMonitors(), Fo.isInitMonitore = !0), 1 !== DWLive
					.isMultiStream || DWLive.firstMultiStreamStatus) Bo.checkLiveStatus();
				else {
					DWLive.player && DWLive.player.setPlayStatus({
						isShow: !0,
						msg: "等待中"
					})
				}
			},
			refreshVideo: function(e) {
				Bo.checkLiveStatus(e)
			},
			createPlayer: function(e, t, n, i) {
				Bo.createPlayer(e, t, n, i)
			},
			end: function(e, t) {
				Bo.end(e, t)
			}
		},
		Ho = (T((function(e) {
			var t = function(e) {
				var t, n = Object.prototype,
					i = n.hasOwnProperty,
					r = "function" == typeof Symbol ? Symbol : {},
					o = r.iterator || "@@iterator",
					a = r.asyncIterator || "@@asyncIterator",
					s = r.toStringTag || "@@toStringTag";

				function c(e, t, n) {
					return Object.defineProperty(e, t, {
						value: n,
						enumerable: !0,
						configurable: !0,
						writable: !0
					}), e[t]
				}
				try {
					c({}, "")
				} catch (e) {
					c = function(e, t, n) {
						return e[t] = n
					}
				}

				function u(e, t, n, i) {
					var r = t && t.prototype instanceof m ? t : m,
						o = Object.create(r.prototype),
						a = new O(i || []);
					return o._invoke = function(e, t, n) {
						var i = l;
						return function(r, o) {
							if (i === f) throw new Error("Generator is already running");
							if (i === v) {
								if ("throw" === r) throw o;
								return k()
							}
							for (n.method = r, n.arg = o;;) {
								var a = n.delegate;
								if (a) {
									var s = L(a, n);
									if (s) {
										if (s === h) continue;
										return s
									}
								}
								if ("next" === n.method) n.sent = n._sent = n.arg;
								else if ("throw" === n.method) {
									if (i === l) throw i = v, n.arg;
									n.dispatchException(n.arg)
								} else "return" === n.method && n.abrupt("return", n.arg);
								i = f;
								var c = d(e, t, n);
								if ("normal" === c.type) {
									if (i = n.done ? v : p, c.arg === h) continue;
									return {
										value: c.arg,
										done: n.done
									}
								}
								"throw" === c.type && (i = v, n.method = "throw", n.arg = c
									.arg)
							}
						}
					}(e, n, a), o
				}

				function d(e, t, n) {
					try {
						return {
							type: "normal",
							arg: e.call(t, n)
						}
					} catch (e) {
						return {
							type: "throw",
							arg: e
						}
					}
				}
				e.wrap = u;
				var l = "suspendedStart",
					p = "suspendedYield",
					f = "executing",
					v = "completed",
					h = {};

				function m() {}

				function y() {}

				function g() {}
				var R = {};
				c(R, o, (function() {
					return this
				}));
				var _ = Object.getPrototypeOf,
					w = _ && _(_(C([])));
				w && w !== n && i.call(w, o) && (R = w);
				var D = g.prototype = m.prototype = Object.create(R);

				function E(e) {
					["next", "throw", "return"].forEach((function(t) {
						c(e, t, (function(e) {
							return this._invoke(t, e)
						}))
					}))
				}

				function S(e, t) {
					function n(r, o, a, s) {
						var c = d(e[r], e, o);
						if ("throw" !== c.type) {
							var u = c.arg,
								l = u.value;
							return l && "object" == typeof l && i.call(l, "__await") ? t.resolve(l
								.__await).then((function(e) {
								n("next", e, a, s)
							}), (function(e) {
								n("throw", e, a, s)
							})) : t.resolve(l).then((function(e) {
								u.value = e, a(u)
							}), (function(e) {
								return n("throw", e, a, s)
							}))
						}
						s(c.arg)
					}
					var r;
					this._invoke = function(e, i) {
						function o() {
							return new t((function(t, r) {
								n(e, i, t, r)
							}))
						}
						return r = r ? r.then(o, o) : o()
					}
				}

				function L(e, n) {
					var i = e.iterator[n.method];
					if (i === t) {
						if (n.delegate = null, "throw" === n.method) {
							if (e.iterator.return && (n.method = "return", n.arg = t, L(e, n),
									"throw" === n.method)) return h;
							n.method = "throw", n.arg = new TypeError(
								"The iterator does not provide a 'throw' method")
						}
						return h
					}
					var r = d(i, e.iterator, n.arg);
					if ("throw" === r.type) return n.method = "throw", n.arg = r.arg, n.delegate =
						null, h;
					var o = r.arg;
					return o ? o.done ? (n[e.resultName] = o.value, n.next = e.nextLoc, "return" !==
							n.method && (n.method = "next", n.arg = t), n.delegate = null, h) : o :
						(n.method = "throw", n.arg = new TypeError(
							"iterator result is not an object"), n.delegate = null, h)
				}

				function T(e) {
					var t = {
						tryLoc: e[0]
					};
					1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[
						3]), this.tryEntries.push(t)
				}

				function b(e) {
					var t = e.completion || {};
					t.type = "normal", delete t.arg, e.completion = t
				}

				function O(e) {
					this.tryEntries = [{
						tryLoc: "root"
					}], e.forEach(T, this), this.reset(!0)
				}

				function C(e) {
					if (e) {
						var n = e[o];
						if (n) return n.call(e);
						if ("function" == typeof e.next) return e;
						if (!isNaN(e.length)) {
							var r = -1,
								a = function n() {
									for (; ++r < e.length;)
										if (i.call(e, r)) return n.value = e[r], n.done = !1, n;
									return n.value = t, n.done = !0, n
								};
							return a.next = a
						}
					}
					return {
						next: k
					}
				}

				function k() {
					return {
						value: t,
						done: !0
					}
				}
				return y.prototype = g, c(D, "constructor", g), c(g, "constructor", y), y
					.displayName = c(g, s, "GeneratorFunction"), e.isGeneratorFunction = function(
					e) {
						var t = "function" == typeof e && e.constructor;
						return !!t && (t === y || "GeneratorFunction" === (t.displayName || t.name))
					}, e.mark = function(e) {
						return Object.setPrototypeOf ? Object.setPrototypeOf(e, g) : (e.__proto__ =
							g, c(e, s, "GeneratorFunction")), e.prototype = Object.create(D), e
					}, e.awrap = function(e) {
						return {
							__await: e
						}
					}, E(S.prototype), c(S.prototype, a, (function() {
						return this
					})), e.AsyncIterator = S, e.async = function(t, n, i, r, o) {
						void 0 === o && (o = Promise);
						var a = new S(u(t, n, i, r), o);
						return e.isGeneratorFunction(n) ? a : a.next().then((function(e) {
							return e.done ? e.value : a.next()
						}))
					}, E(D), c(D, s, "Generator"), c(D, o, (function() {
						return this
					})), c(D, "toString", (function() {
						return "[object Generator]"
					})), e.keys = function(e) {
						var t = [];
						for (var n in e) t.push(n);
						return t.reverse(),
							function n() {
								for (; t.length;) {
									var i = t.pop();
									if (i in e) return n.value = i, n.done = !1, n
								}
								return n.done = !0, n
							}
					}, e.values = C, O.prototype = {
						constructor: O,
						reset: function(e) {
							if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this
								.done = !1, this.delegate = null, this.method = "next", this
								.arg = t, this.tryEntries.forEach(b), !e)
								for (var n in this) "t" === n.charAt(0) && i.call(this, n) && !
									isNaN(+n.slice(1)) && (this[n] = t)
						},
						stop: function() {
							this.done = !0;
							var e = this.tryEntries[0].completion;
							if ("throw" === e.type) throw e.arg;
							return this.rval
						},
						dispatchException: function(e) {
							if (this.done) throw e;
							var n = this;

							function r(i, r) {
								return s.type = "throw", s.arg = e, n.next = i, r && (n.method =
									"next", n.arg = t), !!r
							}
							for (var o = this.tryEntries.length - 1; o >= 0; --o) {
								var a = this.tryEntries[o],
									s = a.completion;
								if ("root" === a.tryLoc) return r("end");
								if (a.tryLoc <= this.prev) {
									var c = i.call(a, "catchLoc"),
										u = i.call(a, "finallyLoc");
									if (c && u) {
										if (this.prev < a.catchLoc) return r(a.catchLoc, !0);
										if (this.prev < a.finallyLoc) return r(a.finallyLoc)
									} else if (c) {
										if (this.prev < a.catchLoc) return r(a.catchLoc, !0)
									} else {
										if (!u) throw new Error(
											"try statement without catch or finally");
										if (this.prev < a.finallyLoc) return r(a.finallyLoc)
									}
								}
							}
						},
						abrupt: function(e, t) {
							for (var n = this.tryEntries.length - 1; n >= 0; --n) {
								var r = this.tryEntries[n];
								if (r.tryLoc <= this.prev && i.call(r, "finallyLoc") && this
									.prev < r.finallyLoc) {
									var o = r;
									break
								}
							}
							o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o
								.finallyLoc && (o = null);
							var a = o ? o.completion : {};
							return a.type = e, a.arg = t, o ? (this.method = "next", this.next =
								o.finallyLoc, h) : this.complete(a)
						},
						complete: function(e, t) {
							if ("throw" === e.type) throw e.arg;
							return "break" === e.type || "continue" === e.type ? this.next = e
								.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this
									.method = "return", this.next = "end") : "normal" === e
								.type && t && (this.next = t), h
						},
						finish: function(e) {
							for (var t = this.tryEntries.length - 1; t >= 0; --t) {
								var n = this.tryEntries[t];
								if (n.finallyLoc === e) return this.complete(n.completion, n
									.afterLoc), b(n), h
							}
						},
						catch: function(e) {
							for (var t = this.tryEntries.length - 1; t >= 0; --t) {
								var n = this.tryEntries[t];
								if (n.tryLoc === e) {
									var i = n.completion;
									if ("throw" === i.type) {
										var r = i.arg;
										b(n)
									}
									return r
								}
							}
							throw new Error("illegal catch attempt")
						},
						delegateYield: function(e, n, i) {
							return this.delegate = {
								iterator: C(e),
								resultName: n,
								nextLoc: i
							}, "next" === this.method && (this.arg = t), h
						}
					}, e
			}(e.exports);
			try {
				regeneratorRuntime = t
			} catch (e) {
				"object" == typeof globalThis ? globalThis.regeneratorRuntime = t : Function("r",
					"regeneratorRuntime = r")(t)
			}
		})), {}),
		Go = ge.f,
		qo = Ne("toStringTag"),
		Jo = function(e, t, n) {
			e && !De(e = n ? e : e.prototype, qo) && Go(e, qo, {
				configurable: !0,
				value: t
			})
		},
		Qo = {};
	_e(Qo, Ne("iterator"), (function() {
		return this
	}));
	var zo = wn("IE_PROTO"),
		$o = Object.prototype,
		Ko = Object.getPrototypeOf || function(e) {
			return e = it(e), De(e, zo) ? e[zo] : "function" == typeof e.constructor && e instanceof e.constructor ?
				e.constructor.prototype : e instanceof Object ? $o : null
		},
		Xo = Ne("iterator"),
		Yo = !([].keys && "next" in [].keys()),
		Zo = "keys",
		ea = "values",
		ta = function() {
			return this
		},
		na = function(e, t, n, i, r, o, a) {
			! function(e, t, n) {
				e.prototype = co(Qo, {
					next: Re(1, n)
				}), Jo(e, t + " Iterator")
			}(n, t, i);
			var s, c, u, d = function(e) {
					if (!Yo && e in v) return v[e];
					switch (e) {
						case Zo:
						case ea:
							return function() {
								return new n(this, e)
							}
					}
					return function() {
						return new n(this, e)
					}
				},
				l = t + " Iterator",
				p = r == ea,
				f = !1,
				v = e.prototype,
				h = v[Xo] || v["@@iterator"] || r && v[r],
				m = h || d(r),
				y = r ? p ? d("entries") : m : void 0,
				g = "Array" == t && v.entries || h;
			if (g && (u = Ko(g.call(new e))) !== Object.prototype && u.next && (Jo(u, l, !0), "function" !=
					typeof u[Xo] && _e(u, Xo, ta)), p && h && h.name !== ea && (f = !0, m = function() {
					return h.call(this)
				}), (Yo || f || !v[Xo]) && _e(v, Xo, m), Ho[t] = m, Ho[l] = ta, r)
				if (s = {
						values: p ? m : d(ea),
						keys: o ? m : d(Zo),
						entries: y
					}, a)
					for (c in s) c in v || Oe(v, c, s[c]);
				else Ie(Ie.P + Ie.F * (Yo || f), t, s);
			return s
		},
		ia = rt(!0);
	na(String, "String", (function(e) {
		this._t = String(e), this._i = 0
	}), (function() {
		var e, t = this._t,
			n = this._i;
		return n >= t.length ? {
			value: void 0,
			done: !0
		} : (e = ia(t, n), this._i += e.length, {
			value: e,
			done: !1
		})
	}));
	var ra = function(e, t) {
			return {
				value: t,
				done: !!e
			}
		},
		oa = na(Array, "Array", (function(e, t) {
			this._t = He(e), this._i = 0, this._k = t
		}), (function() {
			var e = this._t,
				t = this._k,
				n = this._i++;
			return !e || n >= e.length ? (this._t = void 0, ra(1)) : ra(0, "keys" == t ? n : "values" == t ?
				e[n] : [n, e[n]])
		}), "values");
	Ho.Arguments = Ho.Array, tt("keys"), tt("values"), tt("entries");
	for (var aa = Ne("iterator"), sa = Ne("toStringTag"), ca = Ho.Array, ua = {
			CSSRuleList: !0,
			CSSStyleDeclaration: !1,
			CSSValueList: !1,
			ClientRectList: !1,
			DOMRectList: !1,
			DOMStringList: !1,
			DOMTokenList: !0,
			DataTransferItemList: !1,
			FileList: !1,
			HTMLAllCollection: !1,
			HTMLCollection: !1,
			HTMLFormElement: !1,
			HTMLSelectElement: !1,
			MediaList: !0,
			MimeTypeArray: !1,
			NamedNodeMap: !1,
			NodeList: !0,
			PaintRequestList: !1,
			Plugin: !1,
			PluginArray: !1,
			SVGLengthList: !1,
			SVGNumberList: !1,
			SVGPathSegList: !1,
			SVGPointList: !1,
			SVGStringList: !1,
			SVGTransformList: !1,
			SourceBufferList: !1,
			StyleSheetList: !0,
			TextTrackCueList: !1,
			TextTrackList: !1,
			TouchList: !1
		}, da = no(ua), la = 0; la < da.length; la++) {
		var pa, fa = da[la],
			va = ua[fa],
			ha = ae[fa],
			ma = ha && ha.prototype;
		if (ma && (ma[aa] || _e(ma, aa, ca), ma[sa] || _e(ma, sa, fa), Ho[fa] = ca, va))
			for (pa in oa) ma[pa] || Oe(ma, pa, oa[pa], !0)
	}
	var ya, ga, Ra, _a = function(e, t, n, i) {
			try {
				return i ? t(ue(n)[0], n[1]) : t(n)
			} catch (t) {
				var r = e.return;
				throw void 0 !== r && ue(r.call(e)), t
			}
		},
		wa = Ne("iterator"),
		Da = Array.prototype,
		Ea = Ne("iterator"),
		Sa = se.getIteratorMethod = function(e) {
			if (null != e) return e[Ea] || e["@@iterator"] || Ho[ut(e)]
		},
		La = T((function(e) {
			var t = {},
				n = {},
				i = e.exports = function(e, i, r, o, a) {
					var s, c, u, d, l, p = a ? function() {
							return e
						} : Sa(e),
						f = ke(r, o, i ? 2 : 1),
						v = 0;
					if ("function" != typeof p) throw TypeError(e + " is not iterable!");
					if (void 0 === (l = p) || Ho.Array !== l && Da[wa] !== l) {
						for (u = p.call(e); !(c = u.next()).done;)
							if ((d = _a(u, f, c.value, i)) === t || d === n) return d
					} else
						for (s = ze(e.length); s > v; v++)
							if ((d = i ? f(ue(c = e[v])[0], c[1]) : f(e[v])) === t || d === n) return d
				};
			i.BREAK = t, i.RETURN = n
		})),
		Ta = function(e, t, n) {
			var i = void 0 === n;
			switch (t.length) {
				case 0:
					return i ? e() : e.call(n);
				case 1:
					return i ? e(t[0]) : e.call(n, t[0]);
				case 2:
					return i ? e(t[0], t[1]) : e.call(n, t[0], t[1]);
				case 3:
					return i ? e(t[0], t[1], t[2]) : e.call(n, t[0], t[1], t[2]);
				case 4:
					return i ? e(t[0], t[1], t[2], t[3]) : e.call(n, t[0], t[1], t[2], t[3])
			}
			return e.apply(n, t)
		},
		ba = ae.process,
		Oa = ae.setImmediate,
		Ca = ae.clearImmediate,
		ka = ae.MessageChannel,
		Pa = ae.Dispatch,
		Ia = 0,
		Wa = {},
		Ma = "onreadystatechange",
		Na = function() {
			var e = +this;
			if (Wa.hasOwnProperty(e)) {
				var t = Wa[e];
				delete Wa[e], t()
			}
		},
		xa = function(e) {
			Na.call(e.data)
		};
	Oa && Ca || (Oa = function(e) {
			for (var t = [], n = 1; arguments.length > n;) t.push(arguments[n++]);
			return Wa[++Ia] = function() {
				Ta("function" == typeof e ? e : Function(e), t)
			}, ya(Ia), Ia
		}, Ca = function(e) {
			delete Wa[e]
		}, "process" == Me(ba) ? ya = function(e) {
			ba.nextTick(ke(Na, e, 1))
		} : Pa && Pa.now ? ya = function(e) {
			Pa.now(ke(Na, e, 1))
		} : ka ? (Ra = (ga = new ka).port2, ga.port1.onmessage = xa, ya = ke(Ra.postMessage, Ra, 1)) : ae
		.addEventListener && "function" == typeof postMessage && !ae.importScripts ? (ya = function(e) {
			ae.postMessage(e + "", "*")
		}, ae.addEventListener("message", xa, !1)) : ya = Ma in ve("script") ? function(e) {
			nn.appendChild(ve("script")).onreadystatechange = function() {
				nn.removeChild(this), Na.call(e)
			}
		} : function(e) {
			setTimeout(ke(Na, e, 1), 0)
		});
	var Aa = {
			set: Oa,
			clear: Ca
		},
		ja = Aa.set,
		Ua = ae.MutationObserver || ae.WebKitMutationObserver,
		Va = ae.process,
		Ba = ae.Promise,
		Fa = "process" == Me(Va);

	function Ha(e) {
		var t, n;
		this.promise = new e((function(e, i) {
			if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor");
			t = e, n = i
		})), this.resolve = Ce(t), this.reject = Ce(n)
	}
	var Ga = {
			f: function(e) {
				return new Ha(e)
			}
		},
		qa = function(e) {
			try {
				return {
					e: !1,
					v: e()
				}
			} catch (e) {
				return {
					e: !0,
					v: e
				}
			}
		},
		Ja = ae.navigator,
		Qa = Ja && Ja.userAgent || "",
		za = Ne("iterator"),
		$a = !1;
	try {
		var Ka = [7][za]();
		Ka.return = function() {
			$a = !0
		}, Array.from(Ka, (function() {
			throw 2
		}))
	} catch (e) {}
	var Xa, Ya, Za, es, ts = Aa.set,
		ns = function() {
			var e, t, n, i = function() {
				var i, r;
				for (Fa && (i = Va.domain) && i.exit(); e;) {
					r = e.fn, e = e.next;
					try {
						r()
					} catch (i) {
						throw e ? n() : t = void 0, i
					}
				}
				t = void 0, i && i.enter()
			};
			if (Fa) n = function() {
				Va.nextTick(i)
			};
			else if (!Ua || ae.navigator && ae.navigator.standalone)
				if (Ba && Ba.resolve) {
					var r = Ba.resolve(void 0);
					n = function() {
						r.then(i)
					}
				} else n = function() {
					ja.call(ae, i)
				};
			else {
				var o = !0,
					a = document.createTextNode("");
				new Ua(i).observe(a, {
					characterData: !0
				}), n = function() {
					a.data = o = !o
				}
			}
			return function(i) {
				var r = {
					fn: i,
					next: void 0
				};
				t && (t.next = r), e || (e = r, n()), t = r
			}
		}(),
		is = "Promise",
		rs = ae.TypeError,
		os = ae.process,
		as = os && os.versions,
		ss = as && as.v8 || "",
		cs = ae.Promise,
		us = "process" == ut(os),
		ds = function() {},
		ls = Ya = Ga.f,
		ps = !! function() {
			try {
				var e = cs.resolve(1),
					t = (e.constructor = {})[Ne("species")] = function(e) {
						e(ds, ds)
					};
				return (us || "function" == typeof PromiseRejectionEvent) && e.then(ds) instanceof t && 0 !== ss
					.indexOf("6.6") && -1 === Qa.indexOf("Chrome/66")
			} catch (e) {}
		}(),
		fs = function(e) {
			var t;
			return !(!ce(e) || "function" != typeof(t = e.then)) && t
		},
		vs = function(e, t) {
			if (!e._n) {
				e._n = !0;
				var n = e._c;
				ns((function() {
					for (var i = e._v, r = 1 == e._s, o = 0, a = function(t) {
							var n, o, a, s = r ? t.ok : t.fail,
								c = t.resolve,
								u = t.reject,
								d = t.domain;
							try {
								s ? (r || (2 == e._h && ys(e), e._h = 1), !0 === s ? n = i : (d && d
										.enter(), n = s(i), d && (d.exit(), a = !0)), n === t
									.promise ? u(rs("Promise-chain cycle")) : (o = fs(n)) ? o
									.call(n, c, u) : c(n)) : u(i)
							} catch (e) {
								d && !a && d.exit(), u(e)
							}
						}; n.length > o;) a(n[o++]);
					e._c = [], e._n = !1, t && !e._h && hs(e)
				}))
			}
		},
		hs = function(e) {
			ts.call(ae, (function() {
				var t, n, i, r = e._v,
					o = ms(e);
				if (o && (t = qa((function() {
						us ? os.emit("unhandledRejection", r, e) : (n = ae
							.onunhandledrejection) ? n({
							promise: e,
							reason: r
						}) : (i = ae.console) && i.error && i.error(
							"Unhandled promise rejection", r)
					})), e._h = us || ms(e) ? 2 : 1), e._a = void 0, o && t.e) throw t.v
			}))
		},
		ms = function(e) {
			return 1 !== e._h && 0 === (e._a || e._c).length
		},
		ys = function(e) {
			ts.call(ae, (function() {
				var t;
				us ? os.emit("rejectionHandled", e) : (t = ae.onrejectionhandled) && t({
					promise: e,
					reason: e._v
				})
			}))
		},
		gs = function(e) {
			var t = this;
			t._d || (t._d = !0, (t = t._w || t)._v = e, t._s = 2, t._a || (t._a = t._c.slice()), vs(t, !0))
		},
		Rs = function(e) {
			var t, n = this;
			if (!n._d) {
				n._d = !0, n = n._w || n;
				try {
					if (n === e) throw rs("Promise can't be resolved itself");
					(t = fs(e)) ? ns((function() {
						var i = {
							_w: n,
							_d: !1
						};
						try {
							t.call(e, ke(Rs, i, 1), ke(gs, i, 1))
						} catch (e) {
							gs.call(i, e)
						}
					})): (n._v = e, n._s = 1, vs(n, !1))
				} catch (e) {
					gs.call({
						_w: n,
						_d: !1
					}, e)
				}
			}
		};
	ps || (cs = function(e) {
		! function(e, t, n, i) {
			if (!(e instanceof t) || void 0 !== i && i in e) throw TypeError(n + ": incorrect invocation!")
		}(this, cs, is, "_h"), Ce(e), Xa.call(this);
		try {
			e(ke(Rs, this, 1), ke(gs, this, 1))
		} catch (e) {
			gs.call(this, e)
		}
	}, (Xa = function(e) {
		this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this
			._n = !1
	}).prototype = function(e, t, n) {
		for (var i in t) Oe(e, i, t[i], n);
		return e
	}(cs.prototype, {
		then: function(e, t) {
			var n = ls(Jt(this, cs));
			return n.ok = "function" != typeof e || e, n.fail = "function" == typeof t && t, n
				.domain = us ? os.domain : void 0, this._c.push(n), this._a && this._a.push(n), this
				._s && vs(this, !1), n.promise
		},
		catch: function(e) {
			return this.then(void 0, e)
		}
	}), Za = function() {
		var e = new Xa;
		this.promise = e, this.resolve = ke(Rs, e, 1), this.reject = ke(gs, e, 1)
	}, Ga.f = ls = function(e) {
		return e === cs || e === es ? new Za(e) : Ya(e)
	}), Ie(Ie.G + Ie.W + Ie.F * !ps, {
		Promise: cs
	}), Jo(cs, is), Cn(is), es = se.Promise, Ie(Ie.S + Ie.F * !ps, is, {
		reject: function(e) {
			var t = ls(this);
			return (0, t.reject)(e), t.promise
		}
	}), Ie(Ie.S + Ie.F * !ps, is, {
		resolve: function(e) {
			return function(e, t) {
				if (ue(e), ce(t) && t.constructor === e) return t;
				var n = Ga.f(e);
				return (0, n.resolve)(t), n.promise
			}(this, e)
		}
	}), Ie(Ie.S + Ie.F * !(ps && function(e, t) {
		if (!t && !$a) return !1;
		var n = !1;
		try {
			var i = [7],
				r = i[za]();
			r.next = function() {
				return {
					done: n = !0
				}
			}, i[za] = function() {
				return r
			}, e(i)
		} catch (e) {}
		return n
	}((function(e) {
		cs.all(e).catch(ds)
	}))), is, {
		all: function(e) {
			var t = this,
				n = ls(t),
				i = n.resolve,
				r = n.reject,
				o = qa((function() {
					var n = [],
						o = 0,
						a = 1;
					La(e, !1, (function(e) {
						var s = o++,
							c = !1;
						n.push(void 0), a++, t.resolve(e).then((function(e) {
							c || (c = !0, n[s] = e, --a || i(n))
						}), r)
					})), --a || i(n)
				}));
			return o.e && r(o.v), n.promise
		},
		race: function(e) {
			var t = this,
				n = ls(t),
				i = n.reject,
				r = qa((function() {
					La(e, !1, (function(e) {
						t.resolve(e).then(n.resolve, i)
					}))
				}));
			return r.e && i(r.v), n.promise
		}
	});
	var _s = function(e, t) {
			return ko("".concat(Co, "/live/data"), e, t)
		},
		ws = function() {
			var e = {
				accountId: DWLive.userid,
				roomId: DWLive.roomid,
				deviceType: Io,
				deviceVersion: Po,
				tpl: DWLive.tpl
			};
			return new Fr((function(t, n) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/chat"), e, t)
				}(e, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						var n = JSON.parse(e).data,
							i = null == n ? void 0 : n.chats;
						if (i && i.length) {
							for (var r = [], o = 0; o < i.length; o++) {
								var a = i[o],
									s = {
										userid: a.user.id,
										username: a.user.name,
										userrole: a.user.role,
										useravatar: a.user.avatar,
										groupId: a.user.groupId,
										usercustommark: a.user.customMark,
										msg: a.content,
										time: zn(a.time),
										chatId: a.id,
										status: a.status,
										checkStatus: a.checkStatus
									};
								a.reply && (s.reply = a.reply), a.at && (s.at = a.at), r.push(s)
							}
							if ("function" == typeof DWLive.onPublicChatMessage)
								for (var c = 0; c < r.length; c++) DWLive.onPublicChatMessage(
									oe(r[c]), "history")
						}
						t("ok")
					},
					fail: function(e) {
						n(e)
					}
				})
			}))
		},
		Ds = function() {
			var e = {
				accountId: DWLive.userid,
				roomId: DWLive.roomid,
				deviceType: Io,
				deviceVersion: Po,
				tpl: DWLive.tpl
			};
			return new Fr((function(t, n) {
				_s(e, {
					type: "GET",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							if (n) {
								if (!n.success) return "function" == typeof DWLive
									.onLoginError && (n.msg = "LIVEDATA_ERR0R", DWLive
										.onLoginError(n)), void(n.error && 10000034 ===
										n.error.code && (DWLive.isValidToken = !1,
											DWLive.login()));
								var i = n.data.meta.dp,
									r = i.pages;
								if (DWLive.pageChanges = [], r && r.length > 0) {
									var o = r[0];
									DWDpc.fastMode ? DWLive.pageChanges.push(o) : DWLive
										.pageChanges.push(oe({
											fileName: o.docName,
											totalPage: o.docTotalPage,
											docid: o.encryptDocId,
											url: o.url,
											page: o.pageNum,
											time: o.time,
											useSDK: o.useSDK
										})), "function" == typeof DWLive.onHistoryPage && (o
											.dpMode = DWLive.documentDisplayMode, DWLive
											.onHistoryPage(o))
								}
								var a = i.animations;
								if (DWLive.animations = [], a && a.length > 0) {
									a.sort((function(e, t) {
										return Gt(e.time) - Gt(t.time)
									}));
									var s = a.pop();
									DWDpc.fastMode ? DWLive.animations.push(s) : DWLive
										.animations.push(oe({
											fileName: s.docName,
											totalPage: s.docTotalPage,
											docid: s.encryptDocId,
											url: s.url,
											page: s.pageNum,
											time: s.time,
											step: s.step
										}))
								}
								t("ok")
							}
						}
					},
					fail: function(t) {
						"function" == typeof DWLive.onLoginError && (e.msg =
								"LIVEDATA_FAIL", e.code = "1001", DWLive.onLoginError(e)),
							DWLive.handleTrack({
								event: "join",
								code: 400,
								scene_type: 0,
								data: {
									requestmsg: e,
									responsemsg: t
								}
							}), n(t)
					}
				})
			}))
		},
		Es = function(e) {
			var t = {
				accountId: DWLive.userid,
				roomId: DWLive.roomid,
				deviceType: Io,
				deviceVersion: Po,
				tpl: DWLive.tpl
			};
			return new Fr((function(n, i) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/dp/draw"), e, t)
				}(t, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						var i = JSON.parse(t).data.draws;
						if (n("ok"), i && i.length)
							if ("rebroadcast" === e && (DWLive.draws = []), DWDpc.fastMode)
								for (var r = 0; r < i.length; r++) DWLive.draws.push(i[r]);
							else
								for (var o = 0; o < i.length; o++) DWLive.draws.push(i[o].data)
					},
					fail: function(e) {
						i(e)
					}
				})
			}))
		},
		Ss = function() {
			var e = {
				accountId: DWLive.userid,
				roomId: DWLive.roomid,
				deviceType: Io,
				deviceVersion: Po,
				tpl: DWLive.tpl
			};
			return new Fr((function(t, n) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/broadcast"), e, t)
				}(e, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						var n = JSON.parse(e).data.broadcasts;
						if (n && n.length)
							for (var i = 0; i < n.length; i++) {
								var r = n[i];
								"function" == typeof DWLive.onBroadcastMsg && DWLive
									.onBroadcastMsg({
										content: r.content,
										time: zn(r.time),
										id: r.id
									}, "history")
							}
						t("ok")
					},
					fail: function(e) {
						n(e)
					}
				})
			}))
		},
		Ls = function() {
			var e = {
				accountId: DWLive.userid,
				roomId: DWLive.roomid,
				deviceType: Io,
				deviceVersion: Po,
				tpl: DWLive.tpl
			};
			return new Fr((function(t, n) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/qa"), e, t)
				}(e, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						for (var n = JSON.parse(e).data, i = n.answers ? n.answers : [], r = n
								.questions ? n.questions : [], o = 0; o < i.length; o++)
							for (var a = i[o], s = 0; s < r.length; s++) {
								var c = r[s];
								c.encryptId == a.encryptId && (a.questionUserId = c
									.questionUserId)
							}
						if (r && r.length)
							for (var u = 0; u < r.length; u++) {
								var d = r[u];
								"function" == typeof DWLive.onQuestion && DWLive.onQuestion(oe({
									action: "question",
									value: {
										id: d.id,
										content: d.content,
										isPublish: d.publish,
										triggerTime: zn(d.time),
										userId: d.user.id,
										groupId: d.user.groupId,
										userName: d.user.name,
										userAvatar: d.user.avatar,
										extra: d.extra
									}
								}))
							}
						if (i && i.length)
							for (var l = 0; l < i.length; l++) {
								var p = i[l];
								"function" == typeof DWLive.onAnswer && DWLive.onAnswer(oe({
									action: "answer",
									value: {
										questionId: p.questionId,
										isPrivate: p.isPrivate,
										content: p.content,
										triggerTime: zn(p.time),
										userId: p.user.id,
										groupId: p.user.groupId,
										userName: p.user.name,
										questionUserId: p.questionUserId,
										userAvatar: p.user.avatar,
										userRole: p.user.role,
										extra: p.extra
									}
								}))
							}
						t("ok")
					},
					fail: function(e) {
						n(e)
					}
				})
			}))
		},
		Ts = function(e) {
			var t = [];
			e && e.chat && 1 === e.chat && (t.push(ws()), t.push(Ss())), e && e.dp && 1 === e.dp && t.push(Es()),
				e && e.qa && 1 === e.qa && t.push(Ls()), 0 !== t.length && Fr.all(t).then((function(e) {
					if (DWLive.isHistoryReady = !0, DWLive.templateData && DWLive.templateData.dp && 1 ===
						DWLive.templateData.dp) {
						var t = {
							pageChange: DWLive.pageChanges,
							animation: DWLive.animations,
							draw: DWLive.draws
						};
						DWDpc.history(t)
					}
				})).catch((function(e) {
					console.log(e)
				}))
		};

	function bs() {
		return (bs = r(regeneratorRuntime.mark((function e() {
			return regeneratorRuntime.wrap((function(e) {
				for (;;) switch (e.prev = e.next) {
					case 0:
						if (!DWLive.templateData || !DWLive.templateData.dp ||
							1 !== DWLive.templateData.dp) {
							e.next = 10;
							break
						}
						return e.t0 = Fr, e.next = 4, Ds();
					case 4:
						return e.t1 = e.sent, e.next = 7, Es("rebroadcast");
					case 7:
						e.t2 = e.sent, e.t3 = [e.t1, e.t2], e.t0.all.call(e.t0,
							e.t3).then((function(e) {
							DWLive.isHistoryReady = !0;
							var t = {
								pageChange: DWLive.pageChanges,
								animation: DWLive.animations,
								draw: DWLive.draws
							};
							DWDpc.history(t)
						})).catch((function(e) {
							console.log(e)
						}));
					case 10:
					case "end":
						return e.stop()
				}
			}), e)
		})))).apply(this, arguments)
	}

	function Os() {
		return 1e3 * DWLive.docDelayTime
	}
	var Cs, ks = {
			options: {
				pusherUrl: "",
				key: "",
				maxMessageCount: 300,
				userId: "",
				roomId: "",
				livePlayerId: "",
				drawPanel: ""
			},
			drawjson: [],
			pagechangedata: [],
			publishStreamTimer: 0,
			endStreamTimer: 0,
			init: function(e) {
				var t = qn() ? 1 : 0;
				switch (this.timeIntervalID = -1, DWLive.forceNew ? this.socket = io.connect(this.options
						.pusherUrl + "?sessionid=" + ks.options.key + "&platform=1&tpl=" + DWLive.tpl +
						"&terminal=" + t, {
							forceNew: !0
						}) : this.socket = io.connect(this.options.pusherUrl, {
						query: {
							sessionid: ks.options.key,
							platform: 1,
							tpl: DWLive.tpl,
							terminal: t
						}
					}), e) {
					case 6:
						Lo(ks);
						break;
					case 5:
					case 2:
					default:
						To(ks), Lo(ks);
						break;
					case 4:
					case 3:
						To(ks)
				}
				this.bind()
			},
			destroy: function() {
				this.hangupInteraction(), this.cancelRequestInteraction(), this.socket && this.socket
					.disconnect(), -1 != this.timeIntervalID && clearInterval(this.timeIntervalID)
			},
			bind: function() {
				var e = this,
					t = !1;
				this.socket.on("connect", (function() {
					"function" == typeof window.onSocketConnect && window.onSocketConnect(), DWLive
						.handleTrack({
							event: "pusher",
							code: 200,
							live_status: DWLive.livestatus,
							serverDomain: DWLive.socketDomain
						})
				})), this.socket.on("connect_error", (function() {
					DWLive.handleTrack({
						event: "pusher",
						code: 404,
						serverDomain: DWLive.socketDomain
					})
				})), this.socket.on("disconnect", (function() {
					"function" == typeof window.onSocketDisconnect && window.onSocketDisconnect(),
						window.isRequesting = !1, DWLive.handleTrack({
							event: "pusher",
							code: 400,
							serverDomain: DWLive.socketDomain
						})
				})), this.socket.on("reconnecting", (function() {
					DWLive.handleTrack({
						event: "pusher",
						code: 402,
						serverDomain: DWLive.socketDomain
					})
				})), this.socket.on("reconnect_error", (function() {
					DWLive.handleTrack({
						event: "pusher",
						code: 403,
						serverDomain: DWLive.socketDomain
					})
				})), this.socket.on("reconnect_failed", (function() {
					DWLive.handleTrack({
						event: "pusher",
						code: 401,
						serverDomain: DWLive.socketDomain
					})
				})), this.socket.on("reconnect", (function() {
					DWLive.handleTrack({
						event: "pusher",
						code: 201,
						serverDomain: DWLive.socketDomain
					})
				})), this.socket.on("configuration", (function(t) {
					t && ((t = JSON.parse(t)).report && t.report.receiving && t.report.receiving
						.forEach((function(t) {
							var n;
							DWLive.reportRule[t] = 0, n = t, e.socket.on(n, (function(
							e) {
								DWLive.reportRule.hasOwnProperty(n) &&
									DWLive.reportRule[n]++
							}))
						})))
				})), this.socket.on("page_change", (function(e) {
					e && "string" == typeof e && ks.pagechangedata.push(JSON.parse(e)),
						"function" == typeof window.on_cc_live_dw_page_change && window
						.on_cc_live_dw_page_change(e);
					var t = JSON.parse(e);
					if ("function" == typeof DWLive.onPageChange) {
						var n = {
							docId: t.value.docid,
							docName: t.value.fileName,
							docTotalPage: t.value.totalPage,
							pageNum: t.value.page,
							dpMode: DWLive.documentDisplayMode,
							width: t.value.width,
							height: t.value.height,
							url: t.value.url
						};
						DWLive.onPageChange(n)
					}
					DWLive.handleTrack({
						event: "pageChange",
						code: 200,
						data: {
							url: t.value.url,
							delayTime: Os()
						}
					})
				})), this.socket.on("change_nickname", (function(e) {
					DWLive.viewername = e, "function" == typeof DWLive.onChangeNickname && DWLive
						.onChangeNickname(e)
				})), this.socket.on("animation_change", (function(e) {
					"function" == typeof window.on_cc_live_dw_animation_change && window
						.on_cc_live_dw_animation_change(e), DWLive.handleTrack({
							event: "animationChange",
							code: 200,
							data: {
								meta: e,
								delayTime: Os()
							}
						})
				})), this.socket.on("draw", (function(e) {
					e && "string" == typeof e && ks.drawjson.push(JSON.parse(e)), "function" ==
						typeof window.on_cc_live_dw_draw && window.on_cc_live_dw_draw(e)
				})), this.socket.on("room_user_count", (function(e) {
					"function" == typeof DWLive.onUserCountMessage && DWLive.onUserCountMessage(e)
				})), this.socket.on("hd-rebroadcast-change-to-sender", (function(e) {
					"function" == typeof DWLive.acceptRebroadcast && DWLive.acceptRebroadcast(e),
						DWLive.refreshVideo(), DWLive.reDrawDocArea()
				})), this.socket.on("hd-rebroadcast-change-to-receiver", (function(e) {
					"function" == typeof DWLive.stopRebroadcast && DWLive.stopRebroadcast(e), DWLive
						.refreshVideo(), DWLive.reDrawDocArea()
				})), this.socket.on("hd-live-start", (function(e) {
					if (!(e = (e = Qn(e)).msg).live.seminarPreparation) {
						DWLive.livestatus = 1, this.publishStreamTimer && clearTimeout(this
							.publishStreamTimer), this.publishStreamTimer = setTimeout((
							function() {
								Fo && (Fo.isPublishing = 1), "function" == typeof DWLive
									.onLiveStart && DWLive.onLiveStart(e), "function" ==
									typeof DWLive.on_live_start && DWLive.on_live_start(e)
							}), Os()), DWLive.handleTrack({
							event: "hd-live-start",
							code: 200,
							data: e
						}), DWLive.liveId = e.live.id;
						var t = e.room.settings;
						if (DWLive.rtcMode = t.multivoice || 0, DWLive.scRole = t.scRole, DWLive
							.rtcMode && DWLive.rtcRole) {
							DWLive.multiplevoice.auth = t.multivoice || 0, DWLive.multiplevoice
								.resolution = t.multivoiceResolution || 1, DWLive.multiplevoice
								.scRole = t.scRole;
							var n = DWLive.rtcRole[t.scRole];
							(DWLive.scRole !== t.scRole || rtc.role && rtc.role !== n) && DWLive
								.changeVeiwMode(n), DWLive.viewingmodeRule && DWLive
								.viewingmodeRule[DWLive.multiplevoice.scRole] && (DWLive
									.roomviewingmode = DWLive.viewingmodeRule[DWLive.multiplevoice
										.scRole])
						}
					}
				})), this.socket.on("switch_layout", (function(e) {
					var t = e = Qn(e),
						n = t.page_layout;
					t.livingMode || DWLive.onSwitchLayout(n)
				})), this.socket.on("multi_stream_status", (function(e) {
					e = Qn(e), DWLive.onMultStatusChange(e)
				})), this.socket.on("publish_stream", (function(e) {})), this.socket.on(
					"multivoice_setting", (function(e) {
						var t = Qn(e);
						DWLive.multivoiceType = t.multivoiceType || 1, "function" == typeof DWLive
							.onMultivoiceOpen && DWLive.onMultivoiceOpen(t)
					})), this.socket.on("multivoice_update", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onMultivoiceUpdate && DWLive
						.onMultivoiceUpdate(e)
				})), this.socket.on("watch_frequency", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onWatchFrequency && DWLive
						.onWatchFrequency(e)
				})), this.socket.on("hd-live-stop", (function(e) {
					var t = (e = Qn(e)).msg.live.seminarPrepareMode;
					void 0 !== t && t ? Us.getLiveRoomInfo() : (e = oe(e), DWLive.livestatus = 0,
						this.endStreamTimer && clearTimeout(this.endStreamTimer), this
						.endStreamTimer = setTimeout((function() {
							DWLive.isLiveing = !1, Fo && (Fo.isPublishing = 0), Oo && Oo
								.clear && Oo.clear(), bo.clear(), "function" ==
								typeof DWLive.onLiveEnd && DWLive.onLiveEnd(e),
								"function" == typeof DWLive.on_live_end && DWLive
								.on_live_end(e)
						}), Os()), DWLive.handleTrack({
							event: "hd-live-stop",
							code: 200,
							data: {
								delayTime: Os()
							}
						}))
				})), this.socket.on("end_stream", (function(e) {})), this.socket.on("kick_out", (function(
				e) {
					ks.socket.disconnect(), DWLive.player && DWLive.player.destroy(), "function" ==
						typeof DWLive.onKickOut && DWLive.onKickOut(e)
				})), this.socket.on("announcement", (function(e) {
					"release" == (e = Qn(e)).action ? "function" == typeof DWLive
						.onAnnouncementRelease && DWLive.onAnnouncementRelease(e.announcement) :
						"remove" == e.action && "function" == typeof DWLive.onAnnouncementRemove &&
						DWLive.onAnnouncementRemove(e)
				})), this.socket.on("in_remind", (function(e) {
					var t = {
						userId: (e = Qn(e)).userId,
						userName: e.userName,
						userRole: e.userRole,
						groupId: e.groupId,
						clientType: e.clientType,
						prefixContent: e.prefixContent,
						suffixContent: e.suffixContent,
						remindAction: 1
					};
					"function" == typeof DWLive.HDUserRemindWithAction && DWLive
						.HDUserRemindWithAction(t)
				})), this.socket.on("out_remind", (function(e) {
					var t = {
						userId: (e = Qn(e)).userId,
						userName: e.userName,
						userRole: e.userRole,
						groupId: e.groupId,
						clientType: e.clientType,
						prefixContent: e.prefixContent,
						suffixContent: e.suffixContent,
						remindAction: 0
					};
					"function" == typeof DWLive.HDUserRemindWithAction && DWLive
						.HDUserRemindWithAction(t)
				})), this.socket.on("start_rollcall", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onStartRollCall && DWLive
						.onStartRollCall(e)
				})), this.socket.on("start_punch", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onHdLiveStartPunch && DWLive
						.onHdLiveStartPunch(e)
				})), this.socket.on("stop_punch", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onHdLiveStopPunch && DWLive
						.onHdLiveStopPunch(e)
				})), this.socket.on("start_lottery", (function(e) {
					DWLive.isLotteryV2 || (e = Qn(e), "function" == typeof DWLive.onStartLottery &&
						DWLive.onStartLottery(e))
				})), this.socket.on("win_lottery", (function(e) {
					DWLive.isLotteryV2 || (e = Qn(e), "function" == typeof DWLive.onWinLottery &&
						DWLive.onWinLottery(e))
				})), this.socket.on("stop_lottery", (function(e) {
					DWLive.isLotteryV2 || (e = Qn(e), "function" == typeof DWLive.onStopLottery &&
						DWLive.onStopLottery(e))
				})), this.socket.on("lottery_create", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onLotteryCreated && DWLive
						.onLotteryCreated(e), "function" == typeof DWLive.onLottery && (e
							.lotteryStatus = 0, e.haveLottery = !0, DWLive.onLottery(e))
				})), this.socket.on("lottery_cancel", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onLotteryCanceled && DWLive
						.onLotteryCanceled(e), "function" == typeof DWLive.onLottery && (e
							.lotteryStatus = 1, e.haveLottery = !0, DWLive.onLottery(e))
				})), this.socket.on("lottery_complete", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onLotteryCompleted && DWLive
						.onLotteryCompleted(e), DWLive.hdGetPersonalLotteryResult(e.lotteryId, (
							function(t) {
								var n, i, r, o, a;
								"function" == typeof DWLive.onLottery && (e.lotteryStatus = 2, e
									.haveLottery = !0, e.LotteryWinInfo = {}, e
									.LotteryWinInfo.isWinner = null === (n = t.data) ||
									void 0 === n ? void 0 : n.winner, e.LotteryWinInfo
									.LotteryCollectTemplate = (null === (i = t.data) ||
										void 0 === i ? void 0 : i.collectTemplate) || [], e
									.LotteryWinInfo.ownUserInfo = null === (r = t.data) ||
									void 0 === r ? void 0 : r.own, e.LotteryWinInfo
									.LotteryPrize = null === (o = t.data) || void 0 === o ?
									void 0 : o.prize, e.LotteryWinInfo.LotteryUserInfo =
									null === (a = t.data) || void 0 === a ? void 0 : a
									.userInfos, DWLive.onLottery(e))
							}))
				})), this.socket.on("start_vote", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onStartVote && DWLive.onStartVote(e)
				})), this.socket.on("stop_vote", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onStopVote && DWLive.onStopVote(e)
				})), this.socket.on("vote_result", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onVoteResult && DWLive.onVoteResult(e)
				})), this.socket.on("ban_stream", (function(e) {
					e = Qn(e), DWLive.isBan = 1, "function" == typeof DWLive.onBanStream && DWLive
						.onBanStream(e), "function" == typeof DWLive.on_live_isBan && DWLive
						.on_live_isBan()
				})), this.socket.on("unban_stream", (function(e) {
					e = Qn(e), DWLive.isBan = 0, "function" == typeof DWLive.onUnBanStream && DWLive
						.onUnBanStream(e), "function" == typeof DWLive.on_live_isUnBan && DWLive
						.on_live_isUnBan(e)
				})), this.socket.on("chat_top", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onChatTop && DWLive.onChatTop(e)
				})), this.socket.on("chat_top_cancel", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onChatTopCancel && DWLive
						.onChatTopCancel(e)
				})), window.isSpeakThirdParty = !1, this.socket.on("room_setting", (function(e) {
					if (e = Qn(e), DWLive.isLiveing = !0, "function" == typeof DWLive
						.onRoomSetting && (window.allowSpeakThirdParty = e.allow_speak_third_party,
							"true" == e.allow_speak_interaction && (window.isSpeakThirdParty = !1),
							window.allowSpeakThirdParty && "true" == window.allowSpeakThirdParty
							.status && (window.isSpeakThirdParty = !0, e.allow_speak_interaction =
								"true"), DWLive.onRoomSetting(e)), e.layout_video_main != t) {
						var n = e.layout_video_main;
						"function" == typeof DWLive.onSwitchVideoDoc && DWLive.onSwitchVideoDoc(n),
							t = n
					}
				})), this.socket.on("ban_chat_broadcast", (function(e) {
					e = Qn(e), "function" == typeof DWLive.HDBanChatBroadcastWithData && DWLive
						.HDBanChatBroadcastWithData(e)
				})), this.socket.on("ban_chat", (function(e) {
					"function" == typeof DWLive.onBanChat && DWLive.onBanChat(Qn(e))
				})), this.socket.on("unban_chat", (function(e) {
					"function" == typeof DWLive.onUnBanChat && DWLive.onUnBanChat(Qn(e))
				})), this.socket.on("silence_user_chat_message", (function(e) {
					"function" == typeof DWLive.onSilenceUserChatMessage && DWLive
						.onSilenceUserChatMessage(Qn(e))
				})), this.socket.on("ban_delete_chat", (function(e) {
					"function" == typeof DWLive.onBanDeleteChat && DWLive.onBanDeleteChat(Qn(e))
				})), this.socket.on("accept_speak", (function(e) {
					"function" == typeof window.on_cc_livesdk_accept_interaction && window
						.on_cc_livesdk_accept_interaction(Qn(e))
				})), this.socket.on("speak_message", (function(e) {
					window.isSpeakThirdParty || "function" != typeof window
						.on_cc_live_interaction_message || window.on_cc_live_interaction_message(Qn(
							e))
				})), this.socket.on("speak_peer_list", (function(e) {
					"function" == typeof window.on_cc_live_interaction_chatusers && window
						.on_cc_live_interaction_chatusers(Qn(e))
				})), this.socket.on("speak_disconnect", (function(e) {
					"function" == typeof window.on_cc_livesdk_interaction_disconnect_self && window
						.on_cc_livesdk_interaction_disconnect_self(Qn(e))
				})), this.socket.on("speak_disconnect_third_party", (function(e) {
					"function" == typeof window.on_cc_livesdk_interaction_disconnect_self && window
						.on_cc_livesdk_interaction_disconnect_self(Qn(e))
				})), this.socket.on("broadcast_msg", (function(e) {
					"function" == typeof DWLive.onBroadcastMsg && DWLive.onBroadcastMsg(Qn(e).value)
				})), this.socket.on("broadcast_action", (function(e) {
					"function" == typeof DWLive.removeBroadcastMsg && DWLive.removeBroadcastMsg(Qn(
						e))
				})), this.socket.on("publish_question", (function(e) {
					"function" == typeof DWLive.onQaPublish && DWLive.onQaPublish(Qn(e))
				})), this.socket.on("questionnaire_publish", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onQuestionnairePublish && DWLive
						.onQuestionnairePublish(e)
				})), this.socket.on("questionnaire_publish_stop", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onQuestionnairePublishStop && DWLive
						.onQuestionnairePublishStop(e)
				})), this.socket.on("questionnaire_publish_statis", (function(e) {
					e = Qn(e), "function" == typeof DWLive.getQuestionnairePublishStatis && DWLive
						.getQuestionnairePublishStatis(e.questionnaireId, DWLive
							.onQuestionnairePublishStatis)
				})), this.socket.on("external_questionnaire_publish", (function(e) {
					"function" == typeof DWLive.onExternalQuestionnairePublish && DWLive
						.onExternalQuestionnairePublish(Qn(e))
				})), this.socket.on("practice_publish", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onPracticePublish && DWLive
						.onPracticePublish(e)
				})), this.socket.on("practice_stop", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onPracticePublishStop && DWLive
						.onPracticePublishStop(e)
				})), this.socket.on("practice_close", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onPracticeClose && DWLive
						.onPracticeClose(e)
				})), this.socket.on("prize_send", (function(e) {
					e = Qn(e), "function" == typeof DWLive.onPrizeSend && DWLive.onPrizeSend(e)
				})), this.socket.on("room_teachers", (function(e) {
					"function" == typeof DWLive.onOnlineTeachers && DWLive.onOnlineTeachers(Qn(e))
				})), this.socket.on("switch_source", (function(e) {
					"function" == typeof DWLive.onSwitchSource && DWLive.onSwitchSource(e)
				})), this.socket.on("red_packet_start", (function(e) {
					"function" == typeof DWLive.onRedPacketStart && DWLive.onRedPacketStart(e)
				})), this.socket.on("red_packet_end", (function(e) {
					"function" == typeof DWLive.onRedPacketEnd && DWLive.onRedPacketEnd(e)
				})), this.socket.on("aud_invite", (function(e) {
					"function" == typeof DWLive.classAcceptInvite && DWLive.classAcceptInvite(e)
				})), setTimeout((function() {
					try {
						e.socket.emit("room_user_count")
					} catch (e) {}
					try {
						e.socket.emit("room_teachers")
					} catch (e) {}
				}), 1500), this.timeIntervalID = setInterval((function() {
					try {
						e.socket.emit("room_user_count")
					} catch (e) {}
					try {
						e.socket.emit("room_teachers")
					} catch (e) {}
				}), 15e3)
			},
			requestInteraction: function(e, t) {
				var n = "audio";
				e.video && (n += "video");
				var i = {
						viewerId: DWLive.viewerid,
						viewerName: DWLive.viewername,
						type: n
					},
					r = void 0;
				try {
					this.socket.emit("request_speak", oe(i))
				} catch (e) {
					r = e
				} finally {
					"function" == typeof t && t(r)
				}
			},
			cancelRequestInteraction: function(e, t) {
				$n("interaction", "取消申请：" + oe(i));
				var n = void 0;
				try {
					var i = {
						viewerId: DWLive.viewerid,
						viewerName: DWLive.viewername,
						type: window.live.interaction.local.type
					};
					this.socket.emit("cancel_request_speak", oe(i))
				} catch (e) {
					n = e
				} finally {
					"function" == typeof t && t(n)
				}
			},
			hangupInteraction: function(e, t) {
				var n = {
					viewerId: DWLive.viewerid,
					viewerName: DWLive.viewername,
					type: e
				};
				$n("interaction", "挂断事件：" + oe(n));
				var i = void 0;
				try {
					window.isSpeakThirdParty ? this.socket.emit("hangup_interaction_third_party", oe(n)) : this
						.socket.emit("hangup_interaction", oe(n))
				} catch (e) {
					i = e
				} finally {
					"function" == typeof t && t(i)
				}
			}
		},
		Ps = {
			1: "vga",
			2: "720P",
			3: "1080P"
		},
		Is = {
			rtcMounted: !1,
			todoArr: [],
			rtsSupport: !0,
			player: null,
			localStream: null,
			stramPublished: !1,
			orderStatus: 0,
			resolution: null,
			interactionType: null,
			ccTrackLog: null,
			init: function(e) {
				Is.scRole = e.scRole, Is.orderStatus = e.orderStatus, window.rtc || (window.rtc = new Rtc({
						userid: e.userid,
						sessionid: e.sessionid,
						roomid: e.roomid,
						newVersion: !0,
						insetVideo: !1,
						docUpload: !1,
						classUpdateChat: !1,
						isMixedMode: e.isMixedMode
					})), Bo.checkLiveStatus(), Bo.initMonitors(), DWLive.ccTrackLog || (DWLive.ccTrackLog =
						new jo({})), Is.resolution = e.resolution ? Ps[e.resolution] : Ps[1], Is.initMonitors(),
					Is.streamHandler(), this.ccTrackLog = new jo
			},
			traggerCheckPlayStatusInfo: function(e) {
				var t = {
						isShow: "live_start" !== e && "live_warm" !== e,
						msg: e
					},
					n = DWLive.player;
				n && n.setPlayStatus(t)
			},
			streamHandler: function() {
				DWLive.changeVeiwMode = Is.changeVeiwMode, DWLive.joinInteraction = Is.joinInteraction, DWLive
					.leaveInteraction = Is.leaveInteraction, DWLive.streamShow = Is.streamShow, DWLive
					.cameraRotate = Is.cameraRotate, DWLive.changeDevice = Is.switchUserSetting, DWLive
					.systemCheck = Is.systemCheck
			},
			initMonitors: function() {
				var e = this;
				DWLive.on_live_start = function(e) {
					Bo.endTimer && (clearTimeout(Bo.endTimer), Bo.endTimer = null), DWLive.livestatus = 1,
						DWLive.player && Is.traggerCheckPlayStatusInfo("live_start"), "aul" === rtc.role &&
						rtc.getRoomContextInfo(), "aum" !== rtc.role && "auh" !== rtc.role || rtc
						.mediaInit()
				}, rtc.on("room_context", (function(e) {
					var t = JSON.parse(e);
					DWLive.onRoomContext && "function" == typeof DWLive.onRoomContext && DWLive
						.onRoomContext(t.userSettings)
				})), rtc.on("streamPlayState", (function(e) {
					if ("paused" === e.state && "pause" === e.reason) try {
						e.stream.resume()
					} catch (e) {}
					"paused" === e.state && "mute" === e.reason && DWLive.handleTrack({
						event: "streamPlayStatus",
						code: 400,
						data: {
							type: e.type,
							isLocalStream: e.isLocalStream,
							streamId: e.streamId
						}
					}), "paused" === e.state && "unmute" === e.reason && DWLive.handleTrack({
						event: "streamPlayStatus",
						code: 200,
						data: {
							type: e.type,
							isLocalStream: e.isLocalStream,
							streamId: e.streamId
						}
					}), e.isLocalStream && e.stream.on("error", (function(e) {
						e.getCode()
					}))
				})), rtc.on("conference_join", (function(e) {
					"aul" === rtc.role && rtc.getRoomContextInfo().then((function(e) {})),
						"function" == typeof DWLive.rtcJoin && DWLive.rtcJoin(e)
				})), rtc.on("systemCheckResult", (function(e) {
					"function" == typeof DWLive.onSystemCheck && DWLive.onSystemCheck(e)
				})), rtc.on("hdRtcMounted", (function() {
					if (Is.todoArr.length > 0)
						for (var e = 0; e < Is.todoArr.length; e++) {
							var t = Is.todoArr[e].fn,
								n = Is.todoArr[e].callback;
							n ? t(n) : t()
						}
					Is.rtcMounted = !0, rtc.role && rtc.role !== Is.scRole && 40 !== Is
						.orderStatus && setTimeout((function() {
							DWLive.changeVeiwMode(Is.scRole)
						}), 1e3), "function" == typeof DWLive.rtcInit && DWLive.rtcInit()
				})), rtc.on("hdRtcLoaded", (function() {})), rtc.on("login_success", (function(e) {
					rtc && rtc.avatar && (DWLive.avatar = rtc.avatar)
				})), rtc.on("loginFailed", (function(e) {
					if (3003 === Gt(e.code) && "function" == typeof DWLive.onLoginError) {
						var t = {
							code: "3003",
							msg: e
						};
						DWLive.onLoginError(t)
					}
				})), rtc.on("online_users", (function(e) {
					var t = e.filter((function(e) {
						return e.id === rtc.viewerid && "talker" === rtc.role
					}));
					t && t[0] && "3" === t[0].status && !Is.localStream && 3 === DWLive
						.speakingmode && 40 === Is.orderStatus && Is.creatLocalStream(), t && t[
						0] && "0" === t[0].status && 40 === Is.orderStatus && Is.localStream && Is
						.stramPublished && Is.leaveInteraction()
				})), rtc.on("allow_sub", (function(e) {
					DWLive.livestatus && rtc.trySubscribeStream({
						tryStream: e,
						success: function(e) {
							if (0 == e.streamType())
								if ("presenter" === e.attr("role")) {
									DWLive.player ? (DWLive.player.setPlayTips(!1, ""),
										setTimeout((function() {
											DWLive.player.switchVideo({
												type: "stream",
												stream: e
											}, {
												video: {
													type: "stream",
													stream: e
												},
												volume: DWLive
													.volume
											})
										}), 500)) : Bo.createPlayer("stream", e,
										"live_start");
									DWLive.onHDReceivedVideoQuality && DWLive
										.onHDReceivedVideoQuality([{
											desc: "原画",
											quality: 0,
											active: !0
										}]), DWLive.onLiveStarting && DWLive
										.onLiveStarting()
								} else if ("talker" === e.attr("role") && DWLive
								.onStreamAdd && "function" == typeof DWLive.onStreamAdd
								) {
								var t = {
									id: e.id(),
									isMe: e.attr("userid") === rtc.viewerid,
									stream: e
								};
								DWLive.onStreamAdd(t)
							}
						},
						fail: function(e) {}
					})
				})), rtc.on("stream_removed", (function(e) {
					var t = e.attr("role");
					if (rtc.unSubscribeStream({
							unSubStream: e
						}), DWLive.onStreamRemove && "function" == typeof DWLive.onStreamRemove) {
						var n = {
							id: e.id(),
							role: t,
							isMe: e.attr("userid") === rtc.viewerid
						};
						DWLive.onStreamRemove(n)
					}
					"presenter" === t && DWLive.livestatus && !DWLive._isRefresh && DWLive.player
						.setPlayTips(!0, "连麦网络异常，请稍后")
				})), rtc.on("streamLists", (function(t) {
					if (0 !== t.length) {
						t[0].delay_time ? DWLive.docDelayTime = t[0].delay_time : DWLive
							.docDelayTime = 0;
						var n = t[0].videos[0].videoStream[0],
							i = t[0].type,
							r = t[0].audios,
							o = {},
							a = t[0].videos;
						a.forEach((function(e) {
							o[e.quality] = e.videoStream
						}));
						var s = JSON.parse(oe(a)).map((function(e) {
							return {
								desc: e.desc,
								quality: e.quality,
								active: 0 === e.quality
							}
						}));
						DWLive.onHDReceivedVideoQuality && DWLive.onHDReceivedVideoQuality(s), Bo
							.mediaInfo = {
								videoSrc: n,
								type: i,
								audios: r,
								videoStreams: o
							}, DWLive.ccTrackLog.setUrl(Bo.mediaInfo.videoSrc, Bo.mediaInfo.type), e
							.ccTrackLog.monitors({
								type: i,
								url: n
							}), 1 === DWLive.livestatus && (Bo.resetPlayer(), DWLive
								.onLiveStarting && DWLive.onLiveStarting())
					}
				})), rtc.on("switch_user_settings", (function(e) {
					var t = JSON.parse(e),
						n = t.changed,
						i = t.userId,
						r = {
							opt: n,
							value: t.settings[t.changed],
							userid: i
						};
					Is.deviceOperation(r), "talker" !== rtc.role && "aul" !== rtc.role || DWLive
						.onDeviceChange && "function" == typeof DWLive.onDeviceChange && DWLive
						.onDeviceChange(r)
				})), rtc.on("netStatus", (function(e) {
					DWLive.netStatus && "function" == typeof DWLive.netStatus && DWLive.netStatus(e)
				})), rtc.on("server_disconnected", (function(e) {
					DWLive.onInteractionDisconnect && "function" == typeof DWLive
						.onInteractionDisconnect && DWLive.onInteractionDisconnect(e)
				}))
			},
			streamShow: function(e) {
				var t = e.stream,
					n = e.filltype || "contain";
				t.show(e.boxid, n)
			},
			changeRole: function(e, t) {
				var n = {
					to: e
				};
				rtc && e === rtc.role ? "talker" === e && DWLive.changeVeiwMode(Is.scRole) : (!DWLive.player ||
					"aul" !== rtc.role && "talker" !== rtc.role || "aum" !== e && "auh" !== e || (DWLive
						.player.destroy(), DWLive.player = null), "aul" !== Is.scRole && rtc
					.streamingLeave(), rtc.changeRole(n).then((function(e) {
						var n = e.to;
						switch (DWLive.firstplay = 0, n) {
							case "talker":
								"aul" === Is.scRole ? Is.creatLocalStream(t) : rtc.streamingJoin((
									function(e) {
										Is.creatLocalStream(t)
									})), DWLive.viewingmode = 3;
								break;
							case "aul":
								DWLive.viewingmode = 2, rtc.getRoomContextInfo().then((function(e) {
									t && "function" == typeof t && t("success")
								}));
								break;
							case "aum":
								DWLive.viewingmode = 1, rtc.mediaInit(), t && "function" ==
									typeof t && t("success");
								break;
							case "auh":
								DWLive.viewingmode = 0, rtc.mediaInit(), t && "function" ==
									typeof t && t("success")
						}
					})).catch((function(e) {
						t && "function" == typeof t && t(e)
					})))
			},
			creatLocalStream: function(e) {
				var t = {
					video: {
						device: "camera",
						resolution: Is.resolution,
						deviceId: "default"
					},
					audio: !0,
					resolution: Is.resolution
				};
				try {
					var n = localStorage.getItem("devices"),
						i = (n = JSON.parse(n)).video_device_id,
						r = n.audio_device_id;
					i && (t.video.deviceId = i), r && (t.audio = {
						deviceId: r
					})
				} catch (e) {}
				2 === DWLive.multivoiceType && (t.video = !1), rtc.createLocalStream({
					streamName: "main",
					createData: t,
					success: function(t) {
						Is.localStream = !0, t.show("is_me", "contain"), Is.publishLocalStream(t),
							e && "function" == typeof e && e("success")
					},
					fail: function(t) {
						e && "function" == typeof e && e(t)
					}
				})
			},
			publishLocalStream: function(e) {
				var t = e;
				rtc.handsUp({
					success: function(e) {
						rtc.publish({
							streamName: "main",
							mix: !0,
							success: function(e) {
								Is.stramPublished = !0, rtc.updateMcResult({
									pid: 1,
									stid: e.id(),
									success: function(e) {
										DWLive.onMultivoice(rtc.liveId, (
											function(e) {}))
									},
									fail: function(e) {}
								})
							},
							fail: function(e) {
								Is.stramPublished = !1, rtc.updateMcResult({
									pid: 0,
									stid: t.id(),
									success: function(e) {
										Is.leaveInteraction()
									},
									fail: function(e) {}
								})
							}
						})
					},
					fail: function(e) {
						console.log("handsUp fail")
					}
				})
			},
			unPublishLocalStream: function(e) {
				var t = 7 === DWLive.multiplevoice.scRole ? "aul" : 8 === DWLive.multiplevoice.scRole ? "aum" :
					"auh";
				"talker" === rtc.role && (rtc.closeVideo({
					streamName: "main",
					success: function(n) {
						Is.stramPublished = !1, rtc.handsDown({
							uid: rtc.viewerid,
							success: function(n) {
								Is.changeRole(t), Is.offMultivoice(), e && e(
									"success")
							},
							fail: function(t) {
								console.log("下麦失败 handsDown", t), e && e("fail", t)
							}
						})
					},
					fail: function(t) {
						console.log("停止推流失败  closeVideo", t), e && e("fail", t)
					}
				}), Is.localStream = null)
			},
			joinInteraction: function(e) {
				if (!Is.rtcMounted) return Is.todoArr.push({
					fn: Is.joinInteraction,
					callback: e
				}), !1;
				DWLive.speakingmode = 3, Is.changeRole("talker", e)
			},
			offMultivoice: function(e) {
				DWLive.offMultivoice(rtc.liveId, (function(t) {
					e && "function" == typeof e && e(t)
				}))
			},
			leaveInteraction: function(e) {
				if (!Is.rtcMounted) return Is.todoArr.push({
					fn: Is.leaveInteraction,
					callback: e
				}), !1;
				if (3 !== DWLive.speakingmode && 40 !== Is.orderStatus || !1 === Is.stramPublished) {
					var t = 7 === DWLive.multiplevoice.scRole ? "aul" : 8 === DWLive.multiplevoice.scRole ?
						"aum" : "auh";
					return Is.changeRole(t), Is.offMultivoice(e), !1
				}
				DWLive.speakingmode = 0, Is.unPublishLocalStream(e)
			},
			deviceOperation: function(e) {
				var t = e.opt,
					n = e.value;
				"talker" === rtc.role && rtc.viewerid === e.userid && ("allow_audio" === t ? "true" === n ? rtc
					.playAudio({
						streamName: "main",
						fail: function(e) {
							console.error(e)
						}
					}) : rtc.pauseAudio({
						streamName: "main",
						fail: function(e) {
							console.error(e)
						}
					}) : "allow_video" === t && ("true" === n ? rtc.playVideo({
						streamName: "main",
						fail: function(e) {
							console.error(e)
						}
					}) : rtc.pauseVideo({
						streamName: "main",
						fail: function(e) {
							console.error(e)
						}
					})))
			},
			switchUserSetting: function(e) {
				var t = e.opt,
					n = e.userid,
					i = e.value,
					r = e.role;
				rtc.switchUserSetting(t, n, i, r)
			},
			cameraRotate: function(e) {
				var t = e.els,
					n = e.degree;
				rtc.transformUsers(t, n)
			},
			changeVeiwMode: function(e) {
				if ("aul" !== e && "aum" !== e && "auh" !== e) throw new Error("待切换的要观看模式不存在～");
				Is.changeRole(e)
			},
			systemCheck: function(e) {
				var t = {};
				if (Zn.isIosUc || Zn.isWebWechat) return t.isSupport = !1, e(t);
				rtc.systemCheck().then((function(t) {
					e && "function" == typeof e && e(t)
				})).catch((function(t) {
					e && "function" == typeof e && e(t)
				}))
			}
		},
		Ws = {
			f: {}.propertyIsEnumerable
		}.f,
		Ms = (Cs = !1, function(e) {
			for (var t, n = g(e), i = U(n), r = i.length, o = 0, a = []; r > o;) t = i[o++], q && !Ws.call(n,
				t) || a.push(Cs ? [t, n[t]] : n[t]);
			return a
		});
	ne(ne.S, "Object", {
		values: function(e) {
			return Ms(e)
		}
	});
	var Ns = O.Object.values,
		xs = function(e) {
			try {
				window.PeerConnection = window.PeerConnection || window.webkitPeerConnection00 || window
					.webkitRTCPeerConnection || window.mozRTCPeerConnection, window.URL = window.URL || window
					.webkitURL || window.msURL || window.oURL, window.getUserMedia = navigator.getUserMedia ||
					navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia, window
					.nativeRTCIceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate, window
					.nativeRTCSessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription
			} catch (e) {}
			var t;
			this.usersPcs = {
					length: 0
				}, this.local = {
					type: {
						video: !1,
						audio: !1
					},
					video: {},
					audio: {}
				}, this.isRequesting = !1, this.client = null, this.localStream = null, this.initAgoraRTC =
				function(e) {
					if (AgoraRTC.checkSystemRequirements() || DWLive.handleTrack({
							event: "AgoraRTCInitFail",
							code: 400,
							data: {
								msg: "Your browser does not support WebRTC!"
							}
						}), AgoraRTC && (AgoraRTC.enableLogUpload(), AgoraRTC.setLogLevel(3)), window.atob) {
						var t = DWLive.userid,
							n = DWLive.roomid,
							i = DWLive.sessionId,
							r = e.channelId,
							o = window.atob(this.hex2str(e.appId)),
							a = e.viewToken,
							s = e.videosize,
							c = {
								agora: {
									appId: o,
									viewToken: a,
									channelId: r,
									type: this.local.type,
									ui: 0,
									videoSize: s
								},
								tokens: {
									accountId: t,
									roomId: n,
									sessionId: i,
									channelId: r,
									ui: 0
								}
							};
						this.joinAgoraRTC(c)
					}
				}, this.hex2str = function(e) {
					var t, n = e.trim(),
						i = "0x" === n.substr(0, 2).toLowerCase() ? n.substr(2) : n,
						r = i.length;
					if (r % 2 != 0) return alert("Illegal Format ASCII Code!"), "";
					for (var o = [], a = 0; a < r; a += 2) t = Gt(i.substr(a, 2), 16), o.push(String.fromCharCode(
						t));
					return o.join("")
				}, this.joinAgoraRTC = (t = r(regeneratorRuntime.mark((function e(t) {
					var n, i, o, a, s;
					return regeneratorRuntime.wrap((function(e) {
						for (;;) switch (e.prev = e.next) {
							case 0:
								return AgoraRTC.checkSystemRequirements() || DWLive
									.handleTrack({
										event: "AgoraRTCInitFail",
										code: 400,
										data: {
											msg: "Your browser does not support WebRTC!"
										}
									}), (n = this).localTracks = {
										audioTrack: null
									}, t.agora.type.video && (n.localTracks
										.videoTrack = null), n.uid = null, e.next =
									7, AgoraRTC.createClient({
										mode: "live",
										codec: "h264"
									});
							case 7:
								return n.client = e.sent, n.client.on(
									"user-published",
									function() {
										var e = r(regeneratorRuntime.mark((
											function e(i, r) {
												var o, a;
												return regeneratorRuntime
													.wrap((function(
														e) {
														for (;;)
															switch (
																e
																.prev =
																e
																.next
																) {
																case 0:
																	return o =
																		i
																		.uid,
																		e
																		.next =
																		3,
																		n
																		.client
																		.subscribe(
																			i,
																			r
																			);
																case 3:
																	"video" ===
																	r && (a =
																			'<div id="interactionRemoteVideo' +
																			o +
																			'" style="height: 100%; width: 100%;" autoplay></div>',
																			$(
																				"#videoInteractions")
																			.append(
																				a
																				),
																			i
																			.videoTrack
																			.play(
																				"interactionRemoteVideo"
																				.concat(
																					o
																					), {
																					fit: "contain"
																				}
																				),
																			i
																			.videoTrack
																			.on("first-frame-decoded",
																				(function() {
																					t.agora
																						.type
																						.video &&
																						n
																						.videoAudioTrackOnFirstFrameDecoded(
																							"video"
																							)
																				})
																				)
																			),
																		"audio" ===
																		r &&
																		(i.audioTrack
																			.play(),
																			i
																			.audioTrack
																			.on("first-frame-decoded",
																				(function() {
																					!
																					t.agora
																						.type
																						.video &&
																						t
																						.agora
																						.type
																						.audio &&
																						n
																						.videoAudioTrackOnFirstFrameDecoded(
																							"audio"
																							)
																				})
																				)
																			);
																case 5:
																case "end":
																	return e
																		.stop()
															}
													}), e)
											})));
										return function(t, n) {
											return e.apply(this, arguments)
										}
									}()), e.prev = 9, e.next = 12, Fr.all([n
									.client.join(t.agora.appId, t.agora
										.channelId, t.agora.viewToken ||
										null, t.agora.uid || null), AgoraRTC
									.createMicrophoneAudioTrack({
										microphoneId: n.microphoneId
									})
								]);
							case 12:
								if (i = e.sent, o = u(i, 2), n.uid = o[0], n
									.localTracks.audioTrack = o[1], !t.agora.type
									.video) {
									e.next = 23;
									break
								}
								return e.next = 19, AgoraRTC
							.createCameraVideoTrack({
									cameraId: n.cameraId
								});
							case 19:
								return n.localTracks.videoTrack = e.sent, a = t
									.agora.videoSize.split("x"), e.next = 23, n
									.localTracks.videoTrack
								.setEncoderConfiguration({
										width: Gt(a[0]),
										height: Gt(a[1])
									});
							case 23:
								return e.prev = 23, $("#agora_local").length || $(
										"#interactionLocalVideo").after(
										'<div id="agora_local"></div>'), e.next =
									27, n.client.setClientRole("host");
							case 27:
								n.client.publish(Ns(n.localTracks)), e.next = 35;
								break;
							case 30:
								e.prev = 30, e.t0 = e.catch(23), s =
									"publish failed", "string" != typeof e.t0 ? s +=
									oe(e.t0) : s += e.t0, DWLive.handleTrack({
										event: "AgoraRTCPublishFail",
										code: 400,
										data: {
											msg: s
										}
									});
							case 35:
								e.next = 42;
								break;
							case 37:
								e.prev = 37, e.t1 = e.catch(9), s = "join failed",
									"string" != typeof e.t1 ? s += oe(e.t1) : s += e
									.t1, DWLive.handleTrack({
										event: "AgoraRTCJoinFail",
										code: 400,
										data: {
											msg: s
										}
									});
							case 42:
								n.client.on("network-quality", (function(e) {
									var t, i = {
										video: n.client
											.getLocalVideoStats(),
										audio: n.client
											.getLocalAudioStats(),
										rtt: n.client.getRTCStats()
											.RTT
									};
									t = {
											downlinkNetworkQuality: e
												.downlinkNetworkQuality,
											uplinkNetworkQuality: e
												.uplinkNetworkQuality,
											rtt: i.rtt,
											vfps: i.video && i.video
												.sendFrameRate,
											vbps: i.video && i.video
												.sendBitrate,
											abps: i.audio && i.audio
												.sendBitrate,
											vpktLossRate: i.video && i
												.video
												.currentPacketLossRate,
											apktLossRate: i.audio && i
												.audio
												.currentPacketLossRate
										}, "function" == typeof DWLive
										.onLiveInteractionNetworkQuality &&
										DWLive
										.onLiveInteractionNetworkQuality(
											t)
								})), n.client.on("exception", (function(e) {
									if (1005 === e.code || 3005 === e
										.code) {
										var t = {
											code: e.code,
											msg: e.msg,
											uid: e.uid
										};
										"function" == typeof DWLive
											.onLiveInteractionException &&
											DWLive
											.onLiveInteractionException(
												t)
									}
								}));
							case 44:
							case "end":
								return e.stop()
						}
					}), e, this, [
						[9, 37],
						[23, 30]
					])
				}))), function(e) {
					return t.apply(this, arguments)
				}), this.videoAudioTrackOnFirstFrameDecoded = function(e) {
					"function" == typeof window.on_cc_live_interaction_remote_media && window
						.on_cc_live_interaction_remote_media(this.local.type), $("#agora_local").hide(), e &&
						"video" === e && $("#livePlayer").hide(), window.isRequesting = !1
				}, this.leaveAgoraRTC = function() {
					var e = this;
					if (e.client) {
						for (var t in $("#livePlayer").show(), DWLive.openSound(), e.localTracks) {
							var n = e.localTracks[t];
							n && (n.stop(), n.close(), e.localTracks[t] = void 0)
						}
						e.localTracks = {}, e.client.leave(), $("#videoInteractions").empty(), $(
							"#audioInteractions").empty(), $("#interactionLocalVideo")[0].src = "", $(
							"#agora_local").html(""), window.isRequesting = !1
					}
				}, this.cameraId = "", this.microphoneId = "", this.getDevices = function() {
					var e = this;
					AgoraRTC.getDevices((function(t) {
						for (var n = 0; n !== t.length; ++n) {
							var i = t[n];
							"audioinput" !== i.kind || e.microphoneId || (e.microphoneId = i.deviceId),
								"videoinput" !== i.kind || e.cameraId || (e.cameraId = i.deviceId)
						}
					}))
				}, this.requestInteraction = function(e, t) {
					$n("Interaction", "请求互动"), window.isSpeakThirdParty && this.getDevices(), this.local.type = e,
						this.isRequesting = !0, this.setRequestTimeoutTimer(), this.createLocalMedia((function(n) {
							n ? "function" == typeof window.on_cc_live_interaction_error && window
								.on_cc_live_interaction_error(live.interaction.local.type, n, "创建音视频信息出错") :
								ks.requestInteraction(e, t)
						}))
				}, this.setCallingTimer = function() {
					live.interaction.interactionTime = 0, live.interaction.interactionTimeInterval = setInterval((
						function() {
							if (++live.interaction.interactionTime, "function" == typeof window
								.on_cc_live_interaction_interval) {
								var e = live.interaction.local.type,
									t = live.interaction.interactionTime;
								window.on_cc_live_interaction_interval(e, t)
							}
						}), 1e3)
				}, this.clearCallingTimer = function() {
					live.interaction.interactionTime = 0, clearInterval(live.interaction.interactionTimeInterval)
				}, this.setRequestTimeoutTimer = function() {
					live.interaction.REQUEST_INTERACTION_TIMEOUT = setTimeout((function() {
						live.interaction.REQUEST_INTERACTION_TIMEOUT = -1, live.interaction
							.hangupInteraction(DWLive.viewerid), live.interaction.stopLocalStream(),
							live.interaction.isRequesting = !1, $("#interactionLocalVideo")[0] && ($(
								"#interactionLocalVideo")[0].src = ""), "function" == typeof window
							.on_cc_live_interaction_request_timeout && window
							.on_cc_live_interaction_request_timeout(live.interaction.local.type)
					}), 6e4), window.isRequesting = !1
				}, this.clearRequestTimeoutTimer = function() {
					live.interaction.REQUEST_INTERACTION_TIMEOUT > 0 && (clearTimeout(live.interaction
						.REQUEST_INTERACTION_TIMEOUT), live.interaction.REQUEST_INTERACTION_TIMEOUT = -1)
				}, this.stopLocalStream = function() {
					if (live.interaction.local.video.stream) try {
						live.interaction.local.video.stream.getTracks().forEach((function(e) {
							e.stop()
						}))
					} catch (e) {}
					if (live.interaction.local.audio.stream) try {
						live.interaction.local.audio.stream.getTracks().forEach((function(e) {
							e.stop()
						}))
					} catch (e) {}
				}, this.cancelInteraction = function() {
					live.interaction.isRequesting = !1, "function" == typeof window.on_cc_live_interaction_cancal &&
						window.on_cc_live_interaction_cancal(live.interaction.local.type)
				}, this.disconnectInteraction = function(e) {
					try {
						DWLive.openSound()
					} catch (e) {}
					this.clearRequestTimeoutTimer(), e == DWLive.viewerid ? $.each(live.interaction.usersPcs, (
							function(e, t) {
								var n = t.pc;
								if (null == n) return !0;
								if (n.close(), n = null, live.interaction.usersPcs[e]) {
									delete live.interaction.usersPcs[e];
									var i = live.interaction.usersPcs.length - 1;
									live.interaction.usersPcs.length = i < 0 ? 0 : i
								}
							})) : $.each(live.interaction.usersPcs, (function(t, n) {
							var i = n.pc;
							if (!i) return !0;
							if (t != e) return !0;
							if (i.close(), i = null, live.interaction.usersPcs[t]) {
								delete live.interaction.usersPcs[t];
								var r = live.interaction.usersPcs.length - 1;
								live.interaction.usersPcs.length = r < 0 ? 0 : r
							}
						})), 0 == live.interaction.usersPcs.length && this.stopLocalStream(), live.interaction
						.isInteractioning = !1, live.interaction.isRequesting = !1
				}, this.createLocalAudioAndVideoMedia = function(e) {
					var t = this;
					getUserMedia.call(navigator, {
						video: !0,
						audio: !0
					}, (function(n) {
						t.local.video.stream = n, e && "function" == typeof e && e(n)
					}), (function(t) {
						$n("Interaction", "getUserMedia error: " + t), e && "function" == typeof e && e(
							t)
					}))
				}, this.createLocalAudioMedia = function(e) {
					var t = this;
					getUserMedia.call(navigator, {
						video: !1,
						audio: !0
					}, (function(n) {
						t.local.audio.stream = n, e && "function" == typeof e && e(n)
					}), (function(t) {
						$n("Interaction", "getUserMedia error: " + t), e && "function" == typeof e && e(
							t)
					}))
				}, this.createLocalMedia = function(e) {
					var t = this,
						n = t.local.type;
					getUserMedia.call(navigator, n, (function(i) {
						n.video ? t.local.video.stream = i : t.local.audio.stream = i;
						var r = $("#interactionLocalVideo")[0];
						r && (r.srcObject = i, r.volume = 0), "function" == typeof window
							.on_cc_live_interaction_local_media && window
							.on_cc_live_interaction_local_media(n, i), e && "function" == typeof e &&
							e()
					}), (function(t) {
						$n("Interaction", "getUserMedia error: " + t), e && "function" == typeof e && e(
							t)
					}))
				}, this.iceServers = {
					offerExtmapAllowMixed: !1,
					iceServers: [{
						url: "stun:turn.csslcloud.net:3478",
						credential: "bokecc",
						username: "cc"
					}, {
						url: "turn:turn.csslcloud.net:3478",
						credential: "bokecc",
						username: "cc"
					}]
				}, this.createAnswerPeerConnection = function(e) {
					var t = new PeerConnection(this.iceServers);
					"audio" == e.type ? (live.interaction.local.audio.stream || this.createLocalAudioMedia(), t
						.addStream(live.interaction.local.audio.stream)) : (live.interaction.local.video
						.stream || this.createLocalAudioAndVideoMedia(), t.addStream(live.interaction.local
							.video.stream)), t.onaddstream = function(t) {
						"function" == typeof window.on_cc_livesdk_interaction_remote_media_self && window
							.on_cc_livesdk_interaction_remote_media_self(live.interaction.local.type, e, t
								.stream)
					}, t.createAnswer((function(n) {
						t.setLocalDescription(n), n && n.sdp && -1 !== n.sdp.indexOf(
							"\na=extmap-allow-mixed") && (n = new RTCSessionDescription({
							type: n.type,
							sdp: n.sdp.split("\n").filter((function(e) {
								return "a=extmap-allow-mixed" !== e.trim()
							})).join("\n")
						})), DWLive.sendInteractionMessage(live.interaction.local.type, e.id,
							"answer", n)
					}), (function(e) {
						$n("Interaction", "Failure callback: " + e)
					})), t.onicecandidate = function(t) {
						null !== t.candidate && DWLive.sendInteractionMessage(live.interaction.local.type, e.id,
							"", t.candidate)
					}, live.interaction.usersPcs[e.id] = {
						pc: t,
						user: e
					}, live.interaction.usersPcs.length += 1
				}, this.createOfferPeerConnection = function(e) {
					var t = new PeerConnection(this.iceServers),
						n = live.interaction.local.type;
					n.video ? t.addStream(live.interaction.local.video.stream) : t.addStream(live.interaction.local
						.audio.stream), t.onaddstream = function(t) {
						"function" == typeof window.on_cc_livesdk_interaction_remote_media_self && window
							.on_cc_livesdk_interaction_remote_media_self(live.interaction.local.type, e, t
								.stream)
					}, t.oniceconnectionstatechange = function(e) {
						$n("Interaction", "iceConnectionState ..." + t.iceConnectionState), "failed" == t
							.iceConnectionState && ($n("Interaction", "iceConnectionState failed"), live
								.interaction.hangupInteraction(), "function" == typeof window
								.on_cc_live_interaction_disconnect_self && window
								.on_cc_live_interaction_disconnect_self({
									disconnectid: DWLive.viewerid
								}))
					}, t.createOffer((function(i) {
						t.setLocalDescription(i), i && i.sdp && -1 !== i.sdp.indexOf(
							"\na=extmap-allow-mixed") && (i = new RTCSessionDescription({
							type: i.type,
							sdp: i.sdp.split("\n").filter((function(e) {
								return "a=extmap-allow-mixed" !== e.trim()
							})).join("\n")
						})), DWLive.sendInteractionMessage(n, e.id, "offer", i)
					}), (function(e) {
						"function" == typeof window.on_cc_live_interaction_error && window
							.on_cc_live_interaction_error(live.interaction.local.type, e,
								"createOfferPeerConnection")
					})), t.onicecandidate = function(t) {
						null !== t.candidate && DWLive.sendInteractionMessage(n, e.id, "", t.candidate)
					}, live.interaction.usersPcs[e.id] = {
						pc: t,
						user: e
					}, live.interaction.usersPcs.length += 1
				}, this.id = e.interaction.id, this.isSupportInteraction = function() {
					return window.isSpeakThirdParty ? !!AgoraRTC.checkSystemRequirements() || (DWLive.handleTrack({
						event: "AgoraRTCInitFail",
						code: 410,
						data: {
							msg: "Your browser does not support WebRTC!"
						}
					}), !1) : "https:" === window.location.protocol && !!(PeerConnection && URL &&
						getUserMedia && nativeRTCIceCandidate && nativeRTCSessionDescription)
				}, this.hangupInteraction = function(e) {
					this.isInteractioning ? ks.hangupInteraction(this.type, e) : this.isRequesting ? (ks
						.cancelRequestInteraction(this.type, e), this.stopLocalStream(), this
						.cancelInteraction()) : (this.stopLocalStream(), this.cancelInteraction())
				}
		},
		As = {
			interaction: {
				id: "interactionPlayer",
				width: "100%",
				height: "100%"
			}
		},
		js = function(e) {
			this.interaction = new xs(e)
		},
		Us = {
			httpGetVersion: function() {
				var e = "//view.csslcloud.net/version/version.json?v=" + (new Date).getTime(),
					t = null;
				try {
					window.XMLHttpRequest ? t = new XMLHttpRequest : window.ActiveXObject && (t =
						new ActiveXObject("Microsoft.XMLHTTP")), t && (t.open("GET", e, !0), t
						.onreadystatechange = function() {
							if (4 === t.readyState && 200 === t.status) {
								var e = JSON.parse(t.responseText);
								e && Zn.startTestVersion(e)
							}
						}, t.send())
				} catch (e) {
					kt("访问版本信息失败")
				}
			},
			getInteractiveToken: function(e) {
				var t = this,
					n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po
					},
					i = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						userId: DWLive.viewerid,
						username: DWLive.viewername
					};
				DWLive.wechatHead && (i.headUrl = DWLive.wechatHead),
					function(e, t, n) {
						ko("".concat(Co, "/live/interactive/token?accountId=").concat(e.accountId, "&roomId=")
							.concat(e.roomId, "&deviceType=").concat(e.deviceType, "&deviceVersion=")
							.concat(e.deviceVersion), t, n)
					}(n, i, {
						type: "POST",
						token: DWLive.token,
						dataType: "json",
						success: function(n) {
							var i = JSON.parse(n);
							if (i.success && i.data && i.data.token) {
								window.on_cc_live_interactive_token && window
									.on_cc_live_interactive_token(i.data.token);
								var r = i.data.token;
								if (DWLive.interactionToken = r, "function" == typeof DWLive
									.onInteractionToken && DWLive.onInteractionToken(r), e && e
									.likeSwitch) {
									var o = [
										"//frontend.bokecc.com/SDK/interactive/like/1.0.0/LikeSdk.js"
									];
									Zn.loadScript(o, (function() {
										t.initLike({
												token: r,
												receiveLikeInfo: function(e) {
													"function" == typeof DWLive
														.receiveLikeInfo && DWLive
														.receiveLikeInfo(e)
												}
											}), "function" == typeof window
											.on_cc_like_ready && window.on_cc_like_ready()
									}))
								}
								if (e && e.gift && e.gift.giftSwitch) {
									o = [
										"//frontend.bokecc.com/SDK/interactive/reward/1.0.0/RewardSdk.js"];
									Zn.loadScript(o, (function() {
										t.initGift({
												token: r,
												receiveRewarInfo: function(e) {
													"function" == typeof DWLive
														.receiveRewardInfo && DWLive
														.receiveRewardInfo(e)
												}
											}), "function" == typeof window
											.on_cc_gift_ready && window.on_cc_gift_ready()
									}))
								}
								if (e && e.liveCommerce) {
									o = [
										"//frontend.bokecc.com/SDK/interactive/commoditySdk/1.0.0/commoditySdk.js"];
									Zn.loadScript(o, (function() {
										try {
											t.CommoditySdk = new CommoditySdk({
													token: r,
													Event: function(e) {
														"function" == typeof DWLive
															.receiveCommodityInfo &&
															DWLive
															.receiveCommodityInfo(e)
													}
												}), "function" == typeof window
												.on_cc_commodity_ready && window
												.on_cc_commodity_ready()
										} catch (e) {
											return void("function" == typeof window
												.on_cc_commodity_error && window
												.on_cc_commodity_error(e))
										}
									}))
								}
							} else console.error("获取组件token失败", i), "function" == typeof DWLive
								.onInteractiveAuthFailed && DWLive.onInteractiveAuthFailed(n)
						},
						fail: function(e) {
							console.error("获取组件token失败", e), "function" == typeof DWLive
								.onInteractiveAuthFailed && DWLive.onInteractiveAuthFailed(i)
						}
					})
			},
			reportInvitation: function(e, t) {
				var n = Kn("inviteCode");
				if (n) {
					var i = function() {
							var e = navigator.userAgent,
								t = /(?:Windows Phone)/.test(e),
								n = /(?:SymbianOS)/.test(e) || t,
								i = /(?:HarmonyOS)/.test(e),
								r = /(?:Android)/.test(e),
								o = /(?:iPhoneX)/.test(e),
								a = /(?:Firefox)/.test(e),
								s = /(?:Chrome|CriOS)/.test(e),
								c = /(?:iPad|PlayBook)/.test(e) || r && !/(?:Mobile)/.test(e) || a &&
								/(?:Tablet)/.test(e),
								u = /(?:iPhone)/.test(e) && !c,
								d = e.toLocaleLowerCase().indexOf("miniprogram") > -1,
								l = !(u || r || n || d),
								p = u || r || d,
								f = "micromessenger" == e.toLowerCase().match(/MicroMessenger/i),
								v = -1 !== e.toLocaleLowerCase().indexOf("macintosh"),
								h = e.toLowerCase().match(/cpu iphone os (.*?) like mac os/),
								m = "1.0.0";
							return h && (m = h[1].replace(/_/g, ".")), {
								isIpad: c,
								isMobile: p,
								isWeixin: f,
								isPc: l,
								isPhone: u,
								isAndroid: r,
								isChrome: s,
								isMac: v,
								isIphoneX: o,
								isQqBrowser: -1 !== e.toLocaleLowerCase().indexOf("qqbrowser"),
								isWebWechat: e.toLocaleLowerCase().indexOf("windowswechat") > -1 || e
									.toLocaleLowerCase().indexOf("macwechat") > -1,
								iosVersion: m,
								isHarmonyOS: i
							}
						}(),
						r = "PC";
					i.isAndroid ? r = "Android" : (i.isPhone || i.isIpad) && (r = "iOS"),
						function(e, t) {
							ko("//interactive-invite.csslcloud.net/invite/view/report", e, t)
						}({
							inviteCode: n,
							deviceType: r
						}, {
							type: "POST",
							dataType: "JSON",
							interactionToken: e,
							success: function(e) {
								t && t(e)
							},
							fail: function(e) {
								t && t(e)
							}
						})
				}
			},
			getLiveRoomInfo: function() {
				var e = this,
					t = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
				if (location && location.href.includes("seatVip")) {
					var n = location.search.split("&").filter((function(e) {
						return e.includes("seatVip")
					}));
					if (n.length > 0) {
						var i = n[0].split("=");
						i[1] && (t.seatVip = i[1])
					}
				}
				_s(t, {
					type: "GET",
					token: DWLive.token,
					success: function(t) {
						var n;
						if (t) {
							var i = JSON.parse(t);
							if (i) {
								if (!i.success) return "function" == typeof DWLive.onLoginError && (
									i.msg = "LIVEDATA_ERR0R", DWLive.onLoginError(i), DWLive
									.livestatus = 1e3, Fo.init()), void(i.error &&
									10000034 === i.error.code && (DWLive.isValidToken = !1,
										e.login()));
								var r = i.data.live,
									o = r.status,
									a = r.seminarPreparation,
									s = r.seminarLayout;
								if (1 === o && 1 === a) {
									var c = {
											live: i.data.live,
											template: i.data.room,
											viewer: i.data.user,
											settings: i.data.room.settings
										},
										u = i.data.im.primary + "/" + DWLive.roomid;
									return DWLive.socketDomain = i.data.im.primary, ks.options
										.pusherUrl = u, ks.options.key = DWLive.token, DWLive
										.managePreview || ks.init(4), void("function" ==
											typeof DWLive.onLoginSuccess && DWLive.onLoginSuccess(c)
											)
								}
								var d = i.data;
								if (d) {
									var l = null == d ? void 0 : d.accountConfig,
										p = d.im,
										f = null == d ? void 0 : d.live,
										v = null == d ? void 0 : d.meta,
										h = null == d || null === (n = d.room) || void 0 === n ?
										void 0 : n.settings,
										m = null == d ? void 0 : d.template,
										y = null == d ? void 0 : d.user,
										g = p.primary + "/" + DWLive.roomid;
									ks.options.pusherUrl = g, ks.options.key = DWLive.token, DWLive
										.socketDomain = p.primary, DWLive.templateData = m, DWLive
										.isValidToken = !0, DWLive.sessionId = DWLive.token, DWLive
										.upid = d.upId, DWLive.isBan = d.room && d.room.status &&
										40 === d.room.status ? 1 : 0, 1 === (null == m ? void 0 : m
											.chat) && 1 === (null == l ? void 0 : l
											.customEmojiSwitch) && e.getChatCustomEmoji(), DWLive
										.viewerid = y.id, DWLive.viewername = y.name, DWLive
										.groupId = y.groupId, DWLive.wechatHead = y.avatar, DWLive
										.marquee = y.marquee, DWLive.liveId = f.id, DWLive
										.livestatus = f.status, DWLive.fileProcess = h.watermark,
										DWLive.standardWatermark = h.standardWatermark, DWLive
										.watermark = h.standardWatermark, DWLive
										.documentDisplayMode = h.documentDisplayMode, DWLive
										.rtcMode = h.multiVoice, DWLive.viewMode = h.viewMode,
										DWLive.isLotteryV2 = !!h.lotteryV2, DWLive.isBarrage = h
										.barrage, DWLive.barrageData = h.barrage, DWLive
										.isMultiStream = h.multiStreamSwitch, DWLive
										.firstMultiStreamStatus = h.multiStreamSwitch && h
										.multiStream && h.multiStream[0] && 1 === h.multiStream[0]
										.status || !1, 1 === DWLive.isMultiStream && (DWLive
											.streamId = h.multiStream[0].id);
									var R = h.interaction,
										_ = h.customMenu;
									if ("function" == typeof DWLive.onInteractionSettings && DWLive
										.onInteractionSettings(R), R || _) {
										var w = R.enableInteractionGame,
											D = R.likeSwitch,
											E = R.gift,
											S = void 0 === E ? {} : E,
											L = R.voteSwitch,
											T = R.redEnvelopesSwitch,
											b = R.inviteSwitch,
											O = R.questionnaire,
											C = void 0 === O ? {} : O,
											k = R.liveCommerce,
											P = R.watchRewardSwitch;
										(_.filter((function(e) {
												return 9 == e.type
											})).length > 0 || w || D || S.giftSwitch || L || T ||
											b || C && C.state || k || P) && e.getInteractiveToken(R)
									}
									h && h.viewStreamSource > -1 && (DWLive.viewStreamSource = h
											.viewStreamSource), DWLive.warmVideoId = h.warmVideoId,
										DWLive.liveCountdown = h.liveCountdown, DWLive.pictxts = h
										.pictxts, DWLive.rtsFlag = h.lowLatency, DWLive
										.chatCharLimit = h.chatCharLimit || 300;
									var I = h.playerBgImage;
									if (I) "https:" === window.location.protocol && (I = I.replace(
										/http:/g, "https:"));
									else I = "";
									DWLive.backgroundImageUri = I, "function" == typeof DWLive
										.playerBackgroundImageUri && DWLive
										.playerBackgroundImageUri(I);
									var W = h.playerBgHint;
									W || (W = ""), DWLive.backgroundHint = W, "function" ==
										typeof DWLive.playerBackgroundHint && DWLive
										.playerBackgroundHint(W), "function" == typeof DWLive
										.liveCountdown && DWLive.liveCountdown(h.liveCountdown), h
										.videoLogo && h.videoLogo.img && (DWLive.videoLogo = h
											.videoLogo), 1 === DWLive.rtcMode && e
										.getMultivoiceData(), navigator.appVersion.indexOf(
										"MSIE") >= 0 || qn() || DWLive.liveRtc || DWLive.rtcMode ||
										"1" === DWLive.userType || Zn.loadScript([
											"//static.csslcloud.net/js/p1-4.7.3.js"
										], (function() {
											window.live = new js(As), DWLive
												.isSupportInteraction = window.live
												.interaction.isSupportInteraction, DWLive
												.liveRtc = !0
										}));
									var M = {
										liveId: f.id,
										status: f.status,
										liveDuration: f.duration,
										liveStartTime: f.startTime ? zn(f.startTime) : 0,
										seminarLayout: s || 1
									};
									(DWLive.viewStreamSource && 1 === DWLive.viewStreamSource ||
										"4355FEDADB84FBC8" === DWLive.userid ||
										"3480E67323DC9B40" === DWLive.userid ||
										"88F5B1FCDE30281C" === DWLive.userid ||
										"119FA1480CB3EBAF" === DWLive.userid ||
										"985AAE764531A8F3" === DWLive.userid ||
										"6F138CE5CB6563AB" === DWLive.userid) && (m.type = 3, m.dp =
										0, d.room.settings.customMenu = [{
											index: 2,
											name: "聊天",
											nameEng: "Chat",
											type: 2
										}, {
											index: 5,
											name: "简介",
											nameEng: "Intro",
											type: 5
										}]);
									var N = m.type,
										x = {
											name: d.room.name,
											desc: d.room.desc,
											template: N,
											templateData: m,
											type: N,
											id: N
										};
									"function" == typeof DWLive.onRoomSettings && DWLive
										.onRoomSettings(h);
									var A = v.interaction;
									A.length > 0 && A.forEach((function(e) {
										if (1 === e.type) {
											var t = {
												lotteryId: e.id
											};
											DWLive.onLotteryCreated && "function" ==
												typeof DWLive.onLotteryCreated && DWLive
												.onLotteryCreated(t)
										}
										if (2 === e.type) {
											DWLive.punch = e.id;
											var n = {
												punchId: e.id,
												isCreated: !0
											};
											DWLive.onHdLiveStartPunch && "function" ==
												typeof DWLive.onHdLiveStartPunch &&
												DWLive.onHdLiveStartPunch(n)
										}
										if (3 === e.type) {
											DWLive.practice = e.id;
											var i = {
												practiceId: e.id
											};
											DWLive.onPracticePublish && "function" ==
												typeof DWLive.onPracticePublish &&
												DWLive.onPracticePublish(i)
										}
										if (4 === e.type) {
											DWLive.questionnaire = e.id;
											var r = {
												questionnaireId: e.id
											};
											DWLive.onQuestionnairePublish &&
												"function" == typeof DWLive
												.onQuestionnairePublish && DWLive
												.onQuestionnairePublish(r)
										}
										if (5 === e.type) {
											DWLive.redPacket = e.id;
											var o = {
												redPacketId: e.id
											};
											DWLive.onRedPacketStart && "function" ==
												typeof DWLive.onRedPacketStart && DWLive
												.onRedPacketStart(o)
										}
										if (6 === e.type) {
											DWLive.redPacket = e.id;
											var a = {
												redPacketId: e.id
											};
											DWLive.onRedpackStart && "function" ==
												typeof DWLive.onRedpackStart && DWLive
												.onRedpackStart(a)
										}
										7 === e.type && (DWLive.votingId = e.id), 8 ===
											e.type && (DWLive.commodityPushId = e.id)
									}));
									var j = 1 === m.dp,
										U = v.dp,
										V = U.pages,
										B = {};
									V && V.length > 0 && (B = V[0], bo.fastMode ? DWLive.pageChanges
										.push(B) : DWLive.pageChanges.push(oe({
											fileName: B.docName,
											totalPage: B.docTotalPage,
											docid: B.encryptDocId,
											url: B.url,
											page: B.pageNum,
											time: B.time,
											useSDK: B.useSDK
										})));
									var F = U.animations;
									if (F && F.length > 0) {
										F.sort((function(e, t) {
											return Gt(e.time) - Gt(t.time)
										}));
										var H = F.pop();
										bo.fastMode ? DWLive.animations.push(H) : DWLive.animations
											.push(oe({
												fileName: H.docName,
												totalPage: H.docTotalPage,
												docid: H.encryptDocId,
												url: H.url,
												page: H.pageNum,
												time: H.time,
												step: H.step
											}))
									}
									var G = v.announcement;
									"function" == typeof DWLive.onAnnouncementShow && G && DWLive
										.onAnnouncementShow(G);
									var q = null,
										J = 0;
									j && function e() {
											if (document.getElementById("drawPanel")) J = 0, $(
												"#drawPanel").css({
												height: "100%",
												width: "100%"
											}), bo.fastMode && ($("#documentDisplayMode")
												.length <= 0 && $("body").append(
													"<input id='documentDisplayMode' type='hidden' value=''>"
													), $("#documentDisplayMode").val(DWLive
													.documentDisplayMode), bo.isDPReady = !0, bo
												.appendDrawPanel(), bo.init(), window
												.on_hdLive_drawPanel_complete && window
												.on_hdLive_drawPanel_complete(), "function" ==
												typeof DWLive.onHistoryPage && (B.dpMode =
													DWLive.documentDisplayMode, DWLive
													.onHistoryPage(B)), f && f.status && 1 === f
												.status && m && 1 === m.dp && setTimeout((
													function() {
														Ts(m)
													}), 0)), q && clearInterval(q);
											else if (DWLive.userType && "1" === DWLive.userType)
												f && f.status && 1 === f.status && m && 1 === m
												.dp && setTimeout((function() {
													Ts(m)
												}), 0);
											else {
												if (J > 10) return window
													.on_hdLive_drawPanel_completeFailed &&
													window.on_hdLive_drawPanel_completeFailed({
														msg: "文档容器drawPanel没有加载完成～"
													}), q && clearInterval(q), void(J = null);
												J++, q = setInterval(e, 1e3)
											}
										}(), "function" == typeof DWLive.onLiveDesc && DWLive
										.onLiveDesc(x.desc);
									var Q = h.onlineUser;
									switch ("function" == typeof DWLive.showUserCount && DWLive
										.showUserCount(Q), "function" == typeof DWLive.getMarquee &&
										DWLive.getMarquee(y.marquee), "function" == typeof DWLive
										.onLiveTime && DWLive.onLiveTime(M), DWLive.rtcMode ||
										"1" === DWLive.userType || (DWLive.roomviewingmode = DWLive
											.viewMode, DWLive.viewingmode = DWLive.rtsFlag, Fo
											.init()), N) {
										case 6:
											DWLive.sendPublicChatMsg = DWLive.sendPrivateChatMsg =
												function() {
													return !1
												};
											break;
										case 5:
										default:
											"1" !== DWLive.userType && Oo.init();
											break;
										case 4:
											"1" !== DWLive.userType && Oo.init(), DWLive
												.sendQuestionMsg = function() {
													return !1
												};
											break;
										case 3:
											DWLive.sendQuestionMsg = function() {
												return !1
											}
									}
									DWLive.managePreview || ks.init(N);
									c = {
										live: M,
										template: x,
										viewer: y,
										settings: h,
										basicInfo: {
											title: d.room.name,
											liveStartTime: d.room.liveStartTime ? zn(d.room
												.liveStartTime) : 0,
											desc: d.room.desc
										}
									};
									"function" == typeof DWLive.onLoginSuccess && DWLive
										.onLoginSuccess(c), f && f.status && 1 === f.status && (m &&
											0 === m.dp && Ts(m), DWLive.pictxts && e.getPictxts())
								}
							}
						}
					},
					fail: function(e) {
						"function" == typeof DWLive.onLoginError && (t.msg = "LIVEDATA_FAIL", t
							.code = "1001", DWLive.onLoginError(t)), DWLive.handleTrack({
							event: "join",
							code: 400,
							scene_type: 0,
							data: {
								requestmsg: t,
								responsemsg: e
							}
						}), DWLive.livestatus = 1e3, Fo.init()
					}
				})
			},
			getMultivoiceData: function() {
				var e = {
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					viewMode: DWLive.viewMode
				};
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/mv"), e, t)
				}(e, {
					type: "GET",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var t = JSON.parse(e);
							t && t.success ? (DWLive.rtcRole = {
									2: "talker",
									7: "aul",
									8: "aum",
									9: "auh"
								}, DWLive.multiplevoice = t.data, DWLive.multivoiceType = t.data
								.type || 1, DWLive.scRole = t.data.scRole, "function" ==
								typeof DWLive.onMultiplevoiceData && DWLive.onMultiplevoiceData(t
									.data), DWLive.viewingmodeRule && DWLive.viewingmodeRule[DWLive
									.scRole] && (DWLive.roomviewingmode = DWLive.viewingmodeRule[
									DWLive.scRole]), DWLive.speakingmode = 0, 40 === DWLive
								.multiplevoice.order.status && (DWLive.speakingmode = 3), Zn
							.isIE() || Zn.loadScript([
									"//view.csslcloud.net/js/sdk/3.12.0/hdRtc-6.10.13.js",
									"//class.csslcloud.net/sdk/libs/cc-rtc6-4.14.2.js"
								], (function() {
									var e = DWLive.rtcRole[DWLive.scRole];
									DWLive.viewingmodeRule && DWLive.viewingmodeRule[DWLive
										.scRole] && (DWLive.viewingmode = DWLive
										.viewingmodeRule[DWLive.scRole]);
									var t = {
										isMixedMode: !0,
										userid: DWLive.userid,
										sessionid: DWLive.multiplevoice.scSessionId,
										resolution: DWLive.multiplevoice.resolution,
										scRole: e,
										type: DWLive.multiplevoice.type,
										roomid: DWLive.roomid,
										orderStatus: DWLive.multiplevoice.order &&
											DWLive.multiplevoice.order.status || 0
									};
									Is.init(t)
								}))) : kt("获取多人连麦信息失败")
						}
					},
					fail: function(e) {
						kt("获取多人连麦信息失败")
					}
				})
			},
			login: function(e) {
				var t = this,
					n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						userName: DWLive.viewername,
						userToken: DWLive.viewertoken,
						groupId: DWLive.groupid,
						tpl: DWLive.tpl,
						viewercustomua: DWLive.viewercustomua,
						viewercustominfo: DWLive.viewercustominfo
					};
				DWLive.userType && "1" === DWLive.userType && (data.userType = Number(DWLive.userType)),
					function(e, t) {
						ko("".concat(Co, "/live/user/login"), e, t)
					}(n, {
						type: "POST",
						dataType: "JSON",
						success: function(i) {
							if (i) {
								var r = JSON.parse(i);
								if (!r || !r.success) return e && e.fail && "function" === e.fail && e
									.fail(r), "function" == typeof DWLive.onLoginError && DWLive
									.onLoginError(r), void DWLive.handleTrack({
										event: "join",
										code: 400,
										scene_type: 0,
										data: {
											requestmsg: n,
											responsemsg: r
										}
									});
								DWLive.token = r.data.user.token, DWLive.isValidToken || t
									.getLiveRoomInfo(), DWLive.handleTrack({
										event: "join",
										code: 200,
										scene_type: 0,
										data: {
											requestmsg: n,
											responsemsg: r
										}
									})
							}
						},
						fail: function(t) {
							e && e.fail && "function" === e.fail && e.fail(t), "function" ==
								typeof DWLive.onLoginError && DWLive.onLoginError(t), DWLive
								.handleTrack({
									event: "join",
									code: 400,
									scene_type: 0,
									data: {
										requestmsg: n,
										responsemsg: t
									}
								})
						}
					})
			},
			logout: function(e) {
				! function(e, t) {
					ko("".concat(Co, "/live/user/logout"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						if (t) {
							var n = JSON.parse(t);
							e && "function" == typeof e.success && e.success(n)
						}
					},
					fail: function(t) {
						e && "function" == typeof e.error && e.error({
							errorcode: "100",
							msg: "退出失败",
							info: t
						})
					}
				})
			},
			getPictxts: function(e) {
				e = {
					index: 1,
					count: 2,
					type: 3
				};
				var t = e.index,
					n = e.count,
					i = e.type,
					r = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl,
						index: t,
						count: n,
						type: i
					};
				return e && e.id && (r.id = e.id), new Fr((function(e, t) {
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/pictxts"), e, t)
					}(r, {
						type: "GET",
						dataType: "JSON",
						token: DWLive.token,
						success: function(t) {
							var n = JSON.parse(t).data;
							e(n)
						},
						fail: function(e) {
							t(e)
						}
					})
				}))
			},
			getPunch: function(e) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/punch"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						if (t) {
							var n = JSON.parse(t);
							e && "function" == typeof e && e(n)
						}
					},
					fail: function(t) {
						e && "function" == typeof e && e(t)
					}
				})
			},
			commitPunch: function(e, t) {
				var n = {
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				};
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/punch/submit"), e, t)
				}({
					punchId: e
				}, {
					type: "POST",
					dataType: "JSON",
					token: DWLive.token,
					params: n,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			getPractice: function(e, t) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/practice"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					practiceId: e
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							n.datas = null == n ? void 0 : n.data, t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			commitPractice: function(e, t, n) {
				var i = {
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				};
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/practice/submit"), e, t)
				}({
					practiceId: e,
					options: t
				}, {
					type: "POST",
					dataType: "JSON",
					token: DWLive.token,
					params: i,
					success: function(e) {
						if (e) {
							var t = JSON.parse(e);
							n && "function" == typeof n && n(t)
						}
					},
					fail: function(e) {
						n && "function" == typeof n && n(e)
					}
				})
			},
			getPracticeResult: function(e, t) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/practice/statistic"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					practiceId: e
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						var n, i, r, o;
						if (e) {
							var a = JSON.parse(e);
							null != a && null !== (n = a.data) && void 0 !== n && null !== (i = n
									.practice) && void 0 !== i && i.statistic && (a.data.practice
									.answerPersonNum = a.data.practice.statistic.answerCount, a.data
									.practice.correctPersonNum = a.data.practice.statistic.correctCount,
									a.data.practice.correctRate = a.data.practice.statistic
									.correctPercent, a.data.practice.options = a.data.practice.statistic
									.options.map((function(e) {
										return e.isCorrect = e.correct, e
									}))), null != a && null !== (r = a.data) && void 0 !== r && null !==
								(o = r.practice) && void 0 !== o && o.ranking && (a.data.practice
									.ranking = a.data.practice.ranking.map((function(e) {
										return e.viewerId = e.userId, e.viewerName = e.userName,
											e
									}))), a.datas = a.data, t && "function" == typeof t && t(a)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			getQuestionnaire: function(e) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/questionnaire"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						var n, i;
						if (t) {
							var r = JSON.parse(t);
							r.datas = null == r ? void 0 : r.data, r.data & r.data.questionnaire && (r
								.datas.questionnaire.submitedAction = null == r || null === (n = r
									.data) || void 0 === n || null === (i = n.questionnaire) ||
								void 0 === i ? void 0 : i.action), e && "function" == typeof e && e(
								r)
						}
					},
					fail: function(t) {
						e && "function" == typeof e && e(t)
					}
				})
			},
			getQuestionnairePublishStatis: function(e, t) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/questionnaire/statistic"), e, t)
				}({
					questionnaireId: e,
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							null != n && n.data && (n.datas = n.data, n.datas.submitAnswerViewerCount =
								n.data.submitCount), t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			commitQuestionnaire: function(e, t) {
				if (e) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/questionnaire/submit"), e, t)
					}({
						answers: e.answers || {
							subjectsAnswer: e.subjectsAnswer
						},
						questionnaireId: e.questionnaireid || e.questionnaireId
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && callBack({
								errorCode: 1,
								msg: "request was aborted",
								result: e
							})
						}
					})
				}
			},
			getLotteryResult: function(e, t) {
				e ? DWLive.isLotteryV2 ? function(e, t) {
					ko("".concat(Co, "/live/interaction/lottery/user"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					lotteryId: e
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				}) : t && "function" == typeof t && t({
					msg: "该方法仅对抽奖v2.0以上版本生效"
				}) : t && "function" == typeof t && t({
					msg: "没有有效的抽奖id"
				})
			},
			commitLotteryUserInfo: function(e, t) {
				if (e)
					if (DWLive.isLotteryV2) {
						var n = {
							accountId: DWLive.userid,
							roomId: DWLive.roomid,
							deviceType: Io,
							deviceVersion: Po,
							tpl: DWLive.tpl
						};
						! function(e, t) {
							ko("".concat(Co, "/live/interaction/lottery/user/submit"), e, t)
						}({
							lotteryId: e.lotteryId,
							collectInfos: e.collectInfos
						}, {
							type: "POST",
							dataType: "JSON",
							token: DWLive.token,
							params: n,
							success: function(e) {
								if (e) {
									var n = JSON.parse(e);
									n.success ? t && t.onSuccess && t.onSuccess(n) : t && t.onError && t
										.onError(n)
								}
							},
							fail: function(n) {
								t && t.onError && t.onError(e)
							}
						})
					} else t && "function" == typeof t && t({
						msg: "该方法仅对抽奖v2.0以上版本生效"
					})
			},
			getLotteryStatus: function(e, n) {
				DWLive.isLotteryV2 ? function(e, t) {
					ko("".concat(Co, "/api/lottery/student/status"), e, t)
				}(t(t({}, e), {}, {
					accountId: DWLive.userid,
					roomId: DWLive.roomid
				}), {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var t = JSON.parse(e);
							n && "function" == typeof n && n(t)
						}
					},
					fail: function(e) {
						n && "function" == typeof n && n(e)
					}
				}) : n && "function" == typeof n && n({
					msg: "该方法仅对抽奖v2.0以上版本生效"
				})
			},
			getRedPacket: function(e, t) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/red/packet"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					redPacketId: e
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			commitRedPacketInfo: function(e, t, n) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/red/packet/grab"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					liveId: e,
					redPacketId: t
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var t = JSON.parse(e);
							n && "function" == typeof n && n(t)
						}
					},
					fail: function(e) {
						n && "function" == typeof n && n(e)
					}
				})
			},
			getRedPacketRanking: function(e, t, n) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/red/packet/rank"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl,
					liveId: e,
					redPacketId: t
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var t = JSON.parse(e);
							n && "function" == typeof n && n(t)
						}
					},
					fail: function(e) {
						n && "function" == typeof n && n(e)
					}
				})
			},
			acceptMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/invite/agree"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			rejectMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/invite/reject"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			applyMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/request"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			cancelMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/request/cancel"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			multivoiceTimeout: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/timeout/request"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			onMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/notify/on"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			offMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/notify/off"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			multivoiceRefused: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/notify/reject"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			getSessionid: function(e, t) {
				var n = {
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				};
				! function(e, t) {
					ko("".concat(Co, "/live/user/token/sc/update"), e, t)
				}({
					viewMode: e
				}, {
					type: "POST",
					dataType: "JSON",
					token: DWLive.token,
					params: n,
					success: function(e) {
						if (e) {
							var n = JSON.parse(e);
							t && "function" == typeof t && t(n)
						}
					},
					fail: function(e) {
						t && "function" == typeof t && t(e)
					}
				})
			},
			hangupMultivoice: function(e, t) {
				if (e && "string" == typeof e && 0 !== e.trim().length) {
					var n = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						tpl: DWLive.tpl
					};
					! function(e, t) {
						ko("".concat(Co, "/live/interaction/mv/hangup/stu"), e, t)
					}({
						liveId: e
					}, {
						type: "POST",
						dataType: "JSON",
						token: DWLive.token,
						params: n,
						success: function(e) {
							if (e) {
								var n = JSON.parse(e);
								t && "function" == typeof t && t(n)
							}
						},
						fail: function(e) {
							t && "function" == typeof t && t(e)
						}
					})
				}
			},
			getChatTop: function(e) {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/chat/top"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						if (t)
							if ("function" == typeof e) e(t);
							else {
								var n = JSON.parse(t);
								n.success ? e.success(n.data) : e.fail(n.error.message)
							}
					},
					fail: function(t) {
						"function" == typeof e ? e(t) : e.fail(t)
					}
				})
			},
			getChatCustomEmoji: function() {
				! function(e, t) {
					ko("".concat(Co, "/live/interaction/chat/emoji"), e, t)
				}({
					accountId: DWLive.userid,
					roomId: DWLive.roomid,
					deviceType: Io,
					deviceVersion: Po,
					tpl: DWLive.tpl
				}, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(e) {
						if (e) {
							var t, n, i = JSON.parse(e);
							if (i.success) {
								if (null !== (t = i.data) && void 0 !== t && null !== (n = t
										.customEmoji) && void 0 !== n && n.length) {
									var r = {
										customEmojiArr: [],
										customEmojiObj: {}
									};
									i.data.customEmoji.forEach((function(e) {
											r.customEmojiArr.push(e.name), r.customEmojiObj[e
												.name] = e.img
										})), DWLive.customEmoji = r, "function" == typeof DWLive
										.onChatCustomEmoji && DWLive.onChatCustomEmoji(r)
								}
							} else console.error("查询自定义表情失败", i.error)
						}
					},
					fail: function(e) {
						console.error("查询自定义表情失败", data.error)
					}
				})
			},
			getReportConfig: function(e) {
				! function(e, t) {
					ko("".concat(Co, "/api/report/config"), e, t)
				}({}, {
					type: "GET",
					token: DWLive.token,
					success: function(t) {
						if (t) {
							var n = JSON.parse(t);
							e && "function" == typeof e && e(n.data)
						}
					},
					fail: function(t) {
						e && "function" == typeof e && e(t)
					}
				})
			},
			getWarmVideo: function(e) {
				var t = {
						accountId: DWLive.userid,
						roomId: DWLive.roomid,
						deviceType: Io,
						deviceVersion: Po,
						terminal: 3,
						tpl: DWLive.tpl
					},
					n = {};
				! function(e, t) {
					ko("".concat(Co, "/live/plus/warm/play"), e, t)
				}(t, {
					type: "GET",
					dataType: "JSON",
					token: DWLive.token,
					success: function(t) {
						var i = JSON.parse(t);
						t && i.success && i.data ? (n = {
							success: !0,
							video: i.data.video[0].primary,
							cover: i.data.cover
						}, DWLive.warmVideo = n) : n = {
							success: !1,
							error: i.error || ""
						}, e && "function" == typeof e && e(n)
					},
					fail: function(t) {
						n = {
							success: !1,
							error: t || ""
						}, e && "function" == typeof e && e(n)
					}
				})
			},
			httpRequest: function(e) {
				$.ajax({
					url: e.url || "",
					data: e.data || {},
					type: e.type || "GET",
					dataType: e.dataType || "json",
					timeout: e.timeout || 5e3,
					success: function(t) {
						"function" == typeof e.success && e.success(t)
					},
					error: function(t) {
						"function" == typeof e.error && e.error(t)
					},
					fail: function(t) {
						"function" == typeof e.fail && e.fail(t)
					}
				})
			},
			initLike: function(e) {
				try {
					this.likesdk = new LikeSdk(e)
				} catch (e) {
					return void("function" == typeof window.on_cc_like_error && window.on_cc_like_error(e))
				}
			},
			getLikeCount: function() {
				return this.likesdk.getLikeCount()
			},
			addLikeCount: function(e) {
				this.likesdk.addLikeCount(e)
			},
			disconnectLike: function() {
				this.likesdk.disconnect()
			},
			initGift: function(e) {
				try {
					this.giftsdk = new RewardSdk(e)
				} catch (e) {
					return void("function" == typeof window.on_cc_gift_error && window.on_cc_gift_error(e))
				}
			},
			getRewardHistoryRecord: function() {
				return this.giftsdk.getRewardHistoryRecord()
			},
			getRewardList: function() {
				return this.giftsdk.getRewardList()
			},
			getRewardSpecialEffects: function() {
				return this.giftsdk.getRewardSpecialEffects()
			},
			sendGift: function(e) {
				this.giftsdk.sendReward(e)
			},
			disconnectGift: function() {
				this.giftsdk.disconnect()
			},
			getCommodityList: function(e) {
				return this.CommoditySdk.getCommodityList(e)
			},
			getCommodityDetail: function(e) {
				return this.CommoditySdk.getCommodityDetail(e)
			},
			getCommodityLink: function(e) {
				return this.CommoditySdk.getCommodityLink(e)
			},
			disconnectCommodity: function() {
				this.CommoditySdk.disconnect()
			}
		};
	window.isRequesting = !1;
	var Vs = function() {
		function e() {
			o(this, e), window.DWLive = this
		}
		return s(e, [{
			key: "init",
			value: function() {
				var e = this,
					t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.stealth = t.stealth, t.userid || It("userid为必传参数"), t.roomid || It(
						"roomid为必传参数"), this.likesdk = null, this.giftsdk = null, this
					.docInfo = {}, this.isLiveing = !1, this.isShowFullScreen = t.controller +
					"" != "false", this.docDelayTime = 0, this.managePreview = t
					.managePreview || !1, this.DocModeType = {
						NormalMode: 0,
						FreeMode: 1
					}, this.MediaScaleMode = {
						scale43: "4:3",
						scale169: "16:9",
						scaleFull: "full",
						scaleNormal: "normal"
					}, this.DELAY_TIME = 1e4, this.isHistoryReady = !1, this.pageChanges = [],
					this.animations = [], this.draws = [], this.token = t.token || void 0, this
					.roomid = Zn.trim(t.roomid) || void 0, this.userid = Zn.trim(t.userid) ||
					void 0, this.groupid = Zn.trim(t.groupid) || void 0, this.viewername = Zn
					.trim(t.viewername) || void 0, this.viewertoken = Zn.trim(t.viewertoken) ||
					void 0, this.viewerid = Zn.trim(t.viewerid) || void 0, this.forcibly = Zn
					.trim(t.forcibly) || void 0, this.viewercustomua = Zn.trim(t
					.viewercustomua) || void 0, this.viewercustominfo = Zn.trim(t
						.viewercustominfo) || void 0, this.upid = Zn.trim(t.upid), this.ua = Zn
					.trim(t.ua), this.language = Zn.trim(t.language) || "zh", this.forceNew =
					Jn(t.forceNew || !1), this.isPCH5Live = Jn(t.pcH5Live || !0), this
					.fastMode = !0, this.isValidToken = !0, this.liveRtc = !1, this.tpl = t
					.tpl || 20, this.version = Po, this.livestatus = 0, this.roomviewingmode =
					null, this.viewingmode = null, this.speakingmode = 0, this.relativetime =
					null, this.firstplay = 0, this.firstplayTime = 0, this.relativetime = 0,
					this.reportRule = {}, this.debug = t.debug || location && location.href
					.includes("debug=true") || !1, this.volume = 1, this._currentLineIndex = 0,
					this._currentQualityCode = 0, this.controller = t.controller + "" !=
					"false", this.userType = String(Kn("userType")) || "", this.isMultiStream =
					0, this._isRefresh = !1, this.m3u8 = {}, this.isBarrageOpen = !0, Fn("lang",
						this.language), Us.getReportConfig((function(e) {
						DWLive.heartInterval = e.durationInterval || 2e3, DWLive
							.viewingmodeRule = JSON.parse(e.rule)
					})), bo.fastMode = this.fastMode;
				var n = ["//static.csslcloud.net/js/socket.io.js",
					"//static.csslcloud.net/js/report.js",
					"//class.csslcloud.net/cctrack/ccTrack.js",
					"//view.csslcloud.net/js/sdk/".concat(Po, "/ccPlayer.js")
				];
				"1" !== this.userType && (bo.fastMode && n.push(
						"//image.csslcloud.net/live/2.0.2/dpc.js?v=" + (new Date).getTime()
						), qn() || n.push("//static.csslcloud.net/js/swfobject.js",
						"//static.csslcloud.net/js/json3.min.js")), Zn.loadScript(n, (
					function() {
						!e.token || e.forcibly ? (e.isValidToken = !1, e.login()) : Us
							.getLiveRoomInfo()
					}))
			}
		}, {
			key: "reDrawDocArea",
			value: function() {
				return Oo.clear(), bo.clear(),
					function() {
						return bs.apply(this, arguments)
					}()
			}
		}, {
			key: "refreshVideo",
			value: function() {
				Fo.refreshVideo()
			}
		}, {
			key: "login",
			value: function(e) {
				var t = e;
				return Us.login(t)
			}
		}, {
			key: "logout",
			value: function(e) {
				return Us.logout(e)
			}
		}, {
			key: "reportInvitation",
			value: function(e, t) {
				return Us.reportInvitation(e, t)
			}
		}, {
			key: "changeNickname",
			value: function(e) {
				if (!e || "string" != typeof e || e.length > 40) return !1;
				ks.socket.emit("change_nickname", e)
			}
		}, {
			key: "destroy",
			value: function() {
				this.marquee && (this.closeMarquee(), this.closeMarqueeDoc()), bo && bo
					.destroy(), ks && ks.destroy(), window.live && window.live.interaction && (
						window.live.interaction.disconnectInteraction(this.viewerId), window
						.live.interaction.hangupInteraction && window.live.interaction
						.hangupInteraction(), window.live.interaction.leaveAgoraRTC()), DWLive
					.player && (DWLive.player.destroy(), DWLive.player = null), window.rtc && (
						window.rtc = null)
			}
		}, {
			key: "setLocalVideoStream",
			value: function(e, t) {
				2 === DWLive.viewMode ? DWLive.player.setLocalVideoStream() : Fo.refreshVideo(e)
			}
		}, {
			key: "initPlayerHint",
			value: function(e, t) {
				var n = new CustomEvent("initPlayerHint");
				if (window.dispatchEvent(n), 2 === DWLive.viewMode) DWLive.player && DWLive
					.player.initPlayerHint(e, t);
				else {
					DWLive.player && (DWLive.player.destroy(), DWLive.player = null);
					var i = DWLive.livestatus ? "等待中" : "直播等待中";
					DWLive.backgroundHint = e || i, DWLive.backgroundImageUri = t, Fo
						.createPlayer(null, null, "live_waiting")
				}
			}
		}, {
			key: "sendPublicChatMsg",
			value: function(e) {
				if ("string" == typeof e) {
					if (!e || e.length > DWLive.chatCharLimit) return;
					ks.socket && ks.socket.emit("chat_message", e)
				} else {
					if (!e || !e.msg || e.msg.length > DWLive.chatCharLimit) return;
					ks.socket.emit("chat", e)
				}
			}
		}, {
			key: "sendPrivateChatMsg",
			value: function(e, t, n) {
				if (n && !(n.length > DWLive.chatCharLimit)) {
					var i = (new Date).getHours(),
						r = (new Date).getMinutes(),
						o = (new Date).getSeconds();
					r = r > 9 ? r : "0" + r, o = o > 9 ? o : "0" + o;
					var a = {
						fromuserid: this.viewerid,
						fromusername: this.viewername,
						touserid: e,
						tousername: t,
						msg: Zn.trim(n),
						time: i + ":" + r + ":" + o
					};
					ks.socket && ks.socket.emit("private_chat", oe(a))
				}
			}
		}, {
			key: "sendQuestionMsg",
			value: function(e, t) {
				if (e && !(e.length > 300)) {
					var n = {
						action: "question",
						value: {
							userId: this.viewerid,
							userName: this.viewername,
							content: e,
							extra: t
						}
					};
					try {
						ks.socket.emit("question", oe(n))
					} catch (e) {}
				}
			}
		}, {
			key: "getDocumentInfo",
			value: function() {
				return 0 !== ie(DWLive.docInfo).length && DWLive.isLiveing ? DWLive.docInfo : {}
			}
		}, {
			key: "barrage",
			value: function(e, t, n) {
				if (this.isBarrageOpen) {
					var i = $.trim(e);
					if (i) {
						var r = {
							txt: i = i.replace(/\[img_http(s)?:\/\/(.*?)\]/g, ""),
							color: null == t ? "#FFFFFF" : t,
							isSelf: n
						};
						DWLive.player && DWLive.player.sendBarrage(r)
					}
				}
			}
		}, {
			key: "openBarrage",
			value: function(e) {
				this.isBarrageOpen = e, DWLive.player && DWLive.player.openBarrage(e)
			}
		}, {
			key: "showMarquee",
			value: function(e) {
				DWLive.player && DWLive.player.openMarquee(e)
			}
		}, {
			key: "closeMarquee",
			value: function() {
				DWLive.player && DWLive.player.closeMarquee()
			}
		}, {
			key: "getLine",
			value: function() {
				if (DWLive.player) return DWLive.player.getLine()
			}
		}, {
			key: "getCurrentLine",
			value: function() {
				if (DWLive.player) return DWLive.player.getCurrentLine()
			}
		}, {
			key: "changeLine",
			value: function(e, t) {
				DWLive.player && DWLive.player.switchLine(e, t), DWLive._changeLineOpt = "user"
			}
		}, {
			key: "onlyAudio",
			value: function() {
				if (DWLive.player) return DWLive.player.onlyAudio()
			}
		}, {
			key: "setSound",
			value: function(e) {
				if (DWLive.volume = e, DWLive.player && DWLive.player.volume(e), 2 === DWLive
					.viewMode) {
					var t = 0 === e,
						n = document.getElementById("ccPlayer");
					if (!n) return;
					var i = n.querySelector("audio");
					i && (i.volume = e, Zn.isHarmony || (i.muted = t))
				}
			}
		}, {
			key: "showControl",
			value: function(e) {
				DWLive.controller = e, DWLive.player && DWLive.player.showControl(e)
			}
		}, {
			key: "switchFullScreen",
			value: function(e) {
				if (DWLive.player) {
					var t = DWLive.player.video;
					if (2 === DWLive.viewMode) {
						var n = document.getElementById("ccPlayer");
						if (!n) return;
						t = n.querySelector("video")
					}
					return e ? t.requestFullscreen ? t.requestFullscreen() : t
						.mozRequestFullScreen ? t.mozRequestFullScreen() : t
						.msRequestFullscreen ? t.msRequestFullscreen() : t
						.webkitSupportsFullscreen && t.webkitEnterFullscreen() : t
						.exitFullscreen ? t.exitFullscreen() : t.msExitFullscreen ? t
						.msExitFullscreen() : t.mozExitFullScreen ? t.mozExitFullScreen() : t
						.webkitExitFullscreen ? t.webkitExitFullscreen() : document
						.mozCancelFullScreen && document.mozCancelFullScreen(), !1
				}
			}
		}, {
			key: "setShowFullScreenBtn",
			value: function(e) {
				DWLive.player && DWLive.player.setShowFullScreenBtn(e)
			}
		}, {
			key: "clipVideoImage",
			value: function() {
				if (this.isPCH5Live || qn()) {
					var e = document.createElement("canvas"),
						t = e.getContext("2d"),
						n = document.querySelector("#livePlayer video");
					return n ? (e.width = n.videoWidth, e.height = n.videoHeight, t.drawImage(n,
						0, 0, n.videoWidth, n.videoHeight), e.toDataURL()) : ""
				}
			}
		}, {
			key: "changeQuality",
			value: function(e, t) {
				if (DWLive.player) return DWLive.player.switchQuality(e, t)
			}
		}, {
			key: "getQualityIndex",
			value: function() {
				if (DWLive.player) return DWLive.player.getCurrentQualityCode()
			}
		}, {
			key: "play",
			value: function() {
				if (DWLive.player) return DWLive.player.play()
			}
		}, {
			key: "changeVideoScale",
			value: function(e) {}
		}, {
			key: "answerRollcall",
			value: function(e, t) {
				var n = {
					rollcallId: e,
					userId: this.viewerid,
					userName: this.viewername,
					publisherId: t
				};
				ks.socket.emit("answer_rollcall", oe(n))
			}
		}, {
			key: "replyVote",
			value: function(e, t, n) {
				var i = {
					voteId: e,
					voteOption: t,
					publisherId: n
				};
				ks.socket.emit("reply_vote", oe(i))
			}
		}, {
			key: "docBarrage",
			value: function(e, t) {
				Zn.trim(e) && Oo.barrage({
					txt: e,
					color: null == t ? "#FFFFFF" : t
				})
			}
		}, {
			key: "openDocBarrage",
			value: function(e) {
				qn() || bo.fastMode && bo.openBarrage(e)
			}
		}, {
			key: "insertDocBarrage",
			value: function(e) {
				qn() || bo.fastMode && bo.insertBarrage(e)
			}
		}, {
			key: "closeDocBarrage",
			value: function() {
				qn() || bo.fastMode && bo.closeBarrage()
			}
		}, {
			key: "livePlayerInit",
			value: function() {
				Fo.init()
			}
		}, {
			key: "openSound",
			value: function() {
				DWLive.setSound(1)
			}
		}, {
			key: "closeSound",
			value: function() {
				DWLive.setSound(0)
			}
		}, {
			key: "docAdapt",
			value: function(e) {
				bo.fastMode ? bo.docAdapt(e) : live.adapt = e
			}
		}, {
			key: "requestInteraction",
			value: function(e) {
				window.isRequesting || (window.isRequesting = !0, navigator.appVersion.indexOf(
					"MSIE") >= 0 || window.live.interaction.requestInteraction(e))
			}
		}, {
			key: "hangupInteraction",
			value: function() {
				window.live && window.live.interaction && live.interaction.hangupInteraction()
			}
		}, {
			key: "enterInteractionRoom",
			value: function(e) {
				var t = void 0;
				try {
					ks.socket.emit("speak_enter")
				} catch (e) {
					t = e
				} finally {
					"function" == typeof e && e(t)
				}
			}
		}, {
			key: "sendInteractionMessage",
			value: function(e, t, n, i, r) {
				var o = "audio";
				e.video && (o = "audiovideo");
				var a = {
						type: o,
						fromname: this.viewername,
						fromid: this.viewerid,
						fromrole: "student",
						toid: t,
						event: n,
						data: oe(i)
					},
					s = void 0;
				try {
					ks.socket.emit("speak_message", oe(a))
				} catch (e) {
					s = e
				} finally {
					"function" == typeof r && r(s)
				}
			}
		}, {
			key: "showMarqueeDoc",
			value: function(e) {
				bo.fastMode ? bo.showMarquee(e) : Oo.showMarquee(e)
			}
		}, {
			key: "closeMarqueeDoc",
			value: function() {
				bo.fastMode && bo.closeMarquee()
			}
		}, {
			key: "setDocMode",
			value: function(e) {
				bo.fastMode && bo.setDocMode(e)
			}
		}, {
			key: "getDocs",
			value: function(e) {
				bo.fastMode && bo.getDocs(e)
			}
		}, {
			key: "changePageTo",
			value: function(e, t) {
				bo.fastMode && bo.changePageTo(e, t)
			}
		}, {
			key: "getQuestionnairePublishStatis",
			value: function(e, t) {
				Us.getQuestionnairePublishStatis(e, t)
			}
		}, {
			key: "getPublishingQuestionnaire",
			value: function(e, t) {
				Us.getQuestionnaire(t)
			}
		}, {
			key: "submitQuestionnaire",
			value: function(e, t) {
				Us.commitQuestionnaire(e, t)
			}
		}, {
			key: "getPracticeInfomation",
			value: function(e, t) {
				Us.getPractice(e, t)
			}
		}, {
			key: "submitPracticeInfo",
			value: function(e, t, n) {
				Us.commitPractice(e, t, n)
			}
		}, {
			key: "getPracticeStatisInfo",
			value: function(e, t) {
				Us.getPracticeResult(e, t)
			}
		}, {
			key: "getPracticeRanking",
			value: function(e, t) {
				Us.getPracticeResult(e, t)
			}
		}, {
			key: "getHdInquirePunchInformation",
			value: function(e) {
				Us.getPunch(e)
			}
		}, {
			key: "hdCommitPunch",
			value: function(e, t) {
				Us.commitPunch(e, t)
			}
		}, {
			key: "hdGetPersonalLotteryResult",
			value: function(e, t) {
				Us.getLotteryResult(e, t)
			}
		}, {
			key: "commitLottery",
			value: function(e, t) {
				DWLive.isLotteryV2 && Us.commitLotteryUserInfo(e, t)
			}
		}, {
			key: "hdGetLotteryStatusInfo",
			value: function(e, t) {
				Us.getLotteryStatus(e, t)
			}
		}, {
			key: "getHdInquireRedPacketInformation",
			value: function(e, t) {
				Us.getRedPacket(e, t)
			}
		}, {
			key: "submitRedPacketInfo",
			value: function(e, t, n) {
				Us.commitRedPacketInfo(e, t, n)
			}
		}, {
			key: "getRedPacketRanking",
			value: function(e, t, n) {
				Us.getRedPacketRanking(e, t, n)
			}
		}, {
			key: "acceptMultivoice",
			value: function(e, t) {
				Us.acceptMultivoice(e, t)
			}
		}, {
			key: "rejectMultivoice",
			value: function(e, t) {
				Us.rejectMultivoice(e, t)
			}
		}, {
			key: "applyMultivoice",
			value: function(e, t) {
				Us.applyMultivoice(e, t)
			}
		}, {
			key: "cancelMultivoice",
			value: function(e, t) {
				Us.cancelMultivoice(e, t)
			}
		}, {
			key: "multivoiceTimeout",
			value: function(e, t) {
				Us.multivoiceTimeout(e, t)
			}
		}, {
			key: "onMultivoice",
			value: function(e, t) {
				Us.onMultivoice(e, t)
			}
		}, {
			key: "offMultivoice",
			value: function(e, t) {
				Us.offMultivoice(e, t)
			}
		}, {
			key: "multivoiceRefused",
			value: function(e, t) {
				Us.multivoiceRefused(e, t)
			}
		}, {
			key: "getSessionid",
			value: function(e, t) {
				Us.getSessionid(e, t)
			}
		}, {
			key: "hangupMultivoice",
			value: function(e, t) {
				Us.hangupMultivoice(e, t)
			}
		}, {
			key: "getChatTop",
			value: function(e, t) {
				return Us.getChatTop(e, t)
			}
		}, {
			key: "getLikeCount",
			value: function() {
				return Us.getLikeCount()
			}
		}, {
			key: "addLikeCount",
			value: function(e) {
				return Us.addLikeCount(e)
			}
		}, {
			key: "disconnectLike",
			value: function() {
				Us.disconnectLike()
			}
		}, {
			key: "getRewardList",
			value: function() {
				return Us.getRewardList()
			}
		}, {
			key: "getRewardHistoryRecord",
			value: function() {
				return Us.getRewardHistoryRecord()
			}
		}, {
			key: "getRewardSpecialEffects",
			value: function() {
				return Us.getRewardSpecialEffects()
			}
		}, {
			key: "sendGift",
			value: function(e) {
				Us.sendGift(e)
			}
		}, {
			key: "disconnectGift",
			value: function() {
				Us.disconnectGift()
			}
		}, {
			key: "getCommodityList",
			value: function(e) {
				return Us.getCommodityList(e)
			}
		}, {
			key: "getCommodityDetail",
			value: function(e) {
				return Us.getCommodityDetail(e)
			}
		}, {
			key: "getCommodityLink",
			value: function(e) {
				return Us.getCommodityLink(e)
			}
		}, {
			key: "disconnectCommodity",
			value: function() {
				Us.disconnectCommodity()
			}
		}, {
			key: "handleTrack",
			value: function(e) {
				if (!DWLive.stealth) try {
					e.business = "2001", e.event_ver = "3.0", e.appVer = DWLive.version, e
						.appid = DWLive.userid, e.roomid = DWLive.roomid, e.userid = DWLive
						.viewerid, e.username = DWLive.viewername, e.userrole = 4, e
						.liveid = DWLive.liveId, e.sessionid = DWLive.token, e.tpl = DWLive
						.tpl, e.timedifference = DWLive.timedifference, ccTrack.tragger(e)
				} catch (e) {}
			}
		}]), e
	}();

	function Bs() {
		if (DWLive.isHistoryReady) {
			if (!bo.fastMode && (DWLive.draws.length && (Oo.draws(DWLive.draws), DWLive.draws = []), DWLive
					.pageChanges.length)) {
				var e = DWLive.pageChanges.pop();
				if (!e) return;
				if (Oo.filp(e), DWLive.animations.length) {
					var t = DWLive.animations.pop(),
						n = Qn(t),
						i = Qn(e);
					i.docid == n.docid && i.time <= n.time && Oo.animationFilp(t)
				}
				DWLive.pageChanges = []
			}
		} else setTimeout((function() {
			Bs()
		}), 3e3)
	}

	function Fs() {
		return 1e3 * DWLive.docDelayTime
	}
	window.cc_doc_delaytime = function(e) {
		e && (DWLive.docDelayTime = e)
	}, window.on_drampanel_ready = function() {
		Oo.isReady = !0, setTimeout((function() {
			Bs()
		}), 1500)
	}, window._swfInit = function() {
		"function" == typeof window.on_cc_live_player_ready && window.on_cc_live_player_ready()
	}, window._swfOk = function(e) {
		"function" == typeof window.on_cc_swf_loading_completed && window.on_cc_swf_loading_completed(e), Fo
			.isReady = !0
	}, window.on_cc_live_dw_draw = function(e) {
		setTimeout((function() {
			bo.draw(e)
		}), Fs()), setTimeout((function() {
			var t = Qn(e);
			Oo.draw(oe(t.value.data))
		}), Fs())
	}, window.on_cc_live_dw_page_change = function(e) {
		var t = Qn(e);
		t.value.traceId = (new Date).getTime(), setTimeout((function() {
			bo.pageChange(oe(t))
		}), Fs()), setTimeout((function() {
			Oo.filp(oe(t.value))
		}), Fs())
	}, window.on_cc_live_dw_animation_change = function(e) {
		setTimeout((function() {
			bo.animationChange(e)
		}), Fs()), setTimeout((function() {
			var t = Qn(e);
			Oo.animationFilp(oe(t.value))
		}), Fs())
	}, window.on_cc_livesdk_accept_interaction = function(e) {
		DWLive.speakingmode = 1, DWLive.player && DWLive.player.volume(0), live.interaction
			.clearRequestTimeoutTimer(), window.isSpeakThirdParty && (live.interaction.initAgoraRTC(e), DWLive
				.speakingmode = 2), DWLive.enterInteractionRoom(), live.interaction.isInteractioning = !0, live
			.interaction.setCallingTimer(), "function" == typeof window.on_cc_live_interaction_accept && window
			.on_cc_live_interaction_accept(live.interaction.local.type, Qn(e))
	}, window.on_cc_live_interaction_message = function(e) {
		e = Qn(e);
		$n("Interaction", "rtc互动信息:" + oe(e));
		var t = e.toid,
			n = e.fromid,
			i = e.fromname,
			r = e.type,
			o = e.data;
		"string" == typeof o && (o = JSON.parse(o));
		var a = e.event;
		if ("offer" === a) {
			if (o.type = a, live.interaction.createAnswerPeerConnection({
					id: n,
					name: i,
					type: r
				}), !(s = live.interaction.usersPcs[n].pc)) return;
			s.setRemoteDescription(new nativeRTCSessionDescription(o)), s.createAnswer((function() {}), (
				function(e) {
					$n("Interaction", "Failure callback: " + e)
				}))
		} else if ("answer" === a) {
			if (!(s = live.interaction.usersPcs[n].pc)) return;
			o.type = a, $n("Interaction", "answer spark_message信息:" + o), s.setRemoteDescription(
					new nativeRTCSessionDescription(o)), s.receivedAnswer = !0, s.receivedAnswer = !0, !s
				.hasAddIce && s.RTCICE && s.addIceCandidate(s.RTCICE)
		} else {
			var s, c = live.interaction.usersPcs[n];
			if (c || (c = live.interaction.usersPcs[t]), !(s = c ? c.pc : null)) return;
			var u = new RTCIceCandidate(o);
			s.receivedAnswer ? (s.hasAddIce = !0, s.addIceCandidate(u)) : (s.hasAddIce = !1, s.RTCICE = u)
		}
	}, window.on_cc_live_interaction_chatusers = function(e) {
		e = Qn(e), $.each(e, (function(e, t) {
			return t.id == DWLive.viewerid || ("publisher" == t.role && !t.isMainSpeaker ||
				void live.interaction.createOfferPeerConnection(t))
		}))
	}, window.on_cc_livesdk_interaction_remote_media_self = function(e, t, n) {
		if ("function" == typeof window.on_cc_live_interaction_remote_media && window
			.on_cc_live_interaction_remote_media(e, t, n), window.isRequesting = !1, e.video) {
			$("#livePlayer").hide();
			var i = "interactionRemoteVideo" + t.id;
			$("#" + i).length < 1 && ($("#videoInteractions").append('<video cc-data="0" id="' + i +
				'" style="height: 100%; width: 100%;" autoplay></video>'), $("#" + i)[0].srcObject = n)
		} else {
			i = "interactionRemoteAudio" + t.id;
			$("#" + i).length < 1 && ($("#audioInteractions").append('<audio cc-data="2" id="' + i +
				'" autoplay controls></audio>'), $("#" + i)[0].srcObject = n)
		}
	}, window.on_cc_livesdk_interaction_disconnect_self = function(e) {
		if (window.isSpeakThirdParty) {
			live.interaction.leaveAgoraRTC();
			var t = live.interaction.local.type;
			"function" == typeof window.on_cc_live_interaction_disconnect && window
				.on_cc_live_interaction_disconnect(e, t)
		}
		var n = e.disconnectid,
			i = !!live.interaction.usersPcs[n];
		if (n == DWLive.viewerid || i) {
			if (n != DWLive.viewerid && i && DWLive.hangupInteraction(), live.interaction.clearCallingTimer(),
				live.interaction.disconnectInteraction(n), n == DWLive.viewerid || 0 == live.interaction
				.usersPcs.length) {
				live.interaction.stopLocalStream();
				t = live.interaction.local.type;
				$("#videoInteractions").empty(), $("#audioInteractions").empty(), $("#interactionLocalVideo")[
					0] && ($("#interactionLocalVideo")[0].src = ""), t.video && ($("#livePlayer").show(), DWLive
						.player && DWLive.player.volume(1)), window.isSpeakThirdParty || "function" !=
					typeof window.on_cc_live_interaction_disconnect || window.on_cc_live_interaction_disconnect(
						e, t)
			}
			DWLive.player && DWLive.player.volume(1), window.isRequesting = !1, DWLive.speakingmode = 0
		}
	}, window.isDebug = !1, window.onunload = function() {
		window.live && window.live.interaction && window.live.interaction.hangupInteraction()
	};
	var Hs = !1;
	window.onbeforeunload = function() {
		Hs = !0, window.DWLive && (DWLive._isRefresh = !0), DWLive.player && DWLive.player.destroy(), window
			.live && window.live.interaction && window.live.interaction.hangupInteraction()
	}, document.addEventListener("visibilitychange", (function() {
		window.DWLive || (window.DWLive = {});
		var e = {
			business: "2001",
			event_ver: "3.0",
			appVer: DWLive.version,
			appid: DWLive.userid,
			roomid: DWLive.roomid,
			userid: DWLive.viewerid,
			username: DWLive.viewername,
			userrole: 4,
			liveid: DWLive.liveId,
			sessionid: DWLive.token,
			tpl: DWLive.tpl,
			timedifference: DWLive.timedifference,
			rid: (new Date).getTime(),
			platform: qn() ? "h5-m" : "h5-pc",
			event: "active_state_change"
		};
		"hidden" === document.visibilityState ? (e.state = "appHidden", !0 === Hs && (Hs = !1, e.state =
				"appClose")) : "visible" === document.visibilityState && (e.state = "appShow"),
			navigator.sendBeacon("//logger.csslcloud.net/event/v1/client", oe(e))
	}));
	var Gs = 0;
	window.addEventListener("message", (function(e) {
		if (e && e.data) {
			var t = e.data;
			(function(e) {
				if ("string" == typeof e) try {
					var t = JSON.parse(e);
					return !("object" != n(t) || !t)
				} catch (e) {
					return !1
				}
			})(t) && (t = JSON.parse(t));
			var i = t.action;
			if (i) {
				var r = {
					userId: DWLive.viewerid,
					userName: DWLive.viewername,
					docId: t.docId,
					url: t.url,
					pageNum: t.pageNum,
					takeTime: t.takeTime
				};
				switch (DWLive.docInfo = {
						docId: t.docId,
						pageNum: t.pageNum
					}, i) {
					case "dpImageLoadCompleteCallback":
						DWLive.docInfo = {
								docId: t.docId,
								pageNum: t.pageNum
							}, "function" == typeof window.on_cc_live_pagechange_complete && window
							.on_cc_live_pagechange_complete(r);
						break;
					case "dpImageLoadErrorCallback":
					case "dpAnimateDocLoadErrorCallback":
						"function" == typeof window.on_cc_live_pagechange_error && window
							.on_cc_live_pagechange_error(r), DWLive.handleTrack({
								event: "dpview",
								code: 400,
								data: {
									url: t.url
								}
							});
						break;
					case "dpImageLoadTimeOutCallback":
					case "dpAnimateSliderTimeOutCallback":
						"function" == typeof window.on_cc_live_pagechange_timeout && window
							.on_cc_live_pagechange_timeoutr(r), DWLive.handleTrack({
								event: "dpview",
								code: 401,
								data: {
									url: t.url
								}
							});
						break;
					case "dpAnimateDocLoadCompleteCallback":
						break;
					case "dpAnimateSliderCompleteCallback":
						Gs = 0, DWLive.docInfo = {
								docId: t.docId,
								pageNum: t.pageNum
							}, "function" == typeof window.on_cc_live_pagechange_complete && window
							.on_cc_live_pagechange_complete(r);
						break;
					case "dpAnimateCompleteCallback":
						Gs = 0;
						break;
					case "dpAnimateTimeOutCallback":
						if (++Gs > 2) return void(Gs = 0);
						var o = {
							docId: t.docId,
							pageNum: t.pageNum,
							step: t.currentStepIndex
						};
						t.time && (o.time = t.time), bo.animationChange(o);
						break;
					case "dpLoadCompleteCallback":
						"function" == typeof DWLive.docLoadComplete && DWLive.docLoadComplete()
				}
			}
		}
	})), "1" === String(Kn("userType")) && setTimeout((function() {
		window.removeEventListener("message", (function() {})), window.cc_doc_delaytime = null, window
			.on_drampanel_ready = null, window._swfInit = null, window._swfOk = null, window
			.on_cc_live_dw_draw = null, window.on_cc_live_dw_page_change = null, window
			.on_cc_live_dw_animation_change = null, window.on_cc_livesdk_accept_interaction = null,
			window.on_cc_livesdk_interaction_remote_media_self = null, window
			.on_cc_livesdk_interaction_disconnect_self = null
	}), 2e3);
	var qs = new Vs;
	return {
		init: qs.init,
		login: qs.login,
		logout: qs.logout,
		sendPublicChatMsg: qs.sendPublicChatMsg,
		sendPrivateChatMsg: qs.sendPrivateChatMsg,
		sendQuestionMsg: qs.sendQuestionMsg,
		barrage: qs.barrage,
		openBarrage: qs.openBarrage,
		docBarrage: qs.docBarrage,
		openDocBarrage: qs.openDocBarrage,
		getLine: qs.getLine,
		changeLine: qs.changeLine,
		onlyAudio: qs.onlyAudio,
		openSound: qs.openSound,
		closeSound: qs.closeSound,
		setSound: qs.setSound,
		livePlayerInit: qs.livePlayerInit,
		getQualityIndex: qs.getQualityIndex,
		changeQuality: qs.changeQuality,
		play: qs.play,
		switchFullScreen: qs.switchFullScreen,
		setShowFullScreenBtn: qs.setShowFullScreenBtn,
		getCurrentLine: qs.getCurrentLine,
		answerRollcall: qs.answerRollcall,
		replyVote: qs.replyVote,
		showControl: qs.showControl,
		requestInteraction: qs.requestInteraction,
		hangupInteraction: qs.hangupInteraction,
		enterInteractionRoom: qs.enterInteractionRoom,
		sendInteractionMessage: qs.sendInteractionMessage,
		docAdapt: qs.docAdapt,
		showMarquee: qs.showMarquee,
		closeMarquee: qs.closeMarquee,
		showMarqueeDoc: qs.showMarqueeDoc,
		closeMarqueeDoc: qs.closeMarqueeDoc,
		changeNickname: qs.changeNickname,
		setDocMode: qs.setDocMode,
		getDocumentInfo: qs.getDocumentInfo,
		getDocs: qs.getDocs,
		changePageTo: qs.changePageTo,
		clipVideoImage: qs.clipVideoImage,
		destroy: qs.destroy,
		getPublishingQuestionnaire: qs.getPublishingQuestionnaire,
		getQuestionnairePublishStatis: qs.getQuestionnairePublishStatis,
		submitQuestionnaire: qs.submitQuestionnaire,
		getPracticeInfomation: qs.getPracticeInfomation,
		submitPracticeInfo: qs.submitPracticeInfo,
		getPracticeStatisInfo: qs.getPracticeStatisInfo,
		getPracticeRanking: qs.getPracticeRanking,
		getHdInquirePunchInformation: qs.getHdInquirePunchInformation,
		hdCommitPunch: qs.hdCommitPunch,
		hdGetPersonalLotteryResult: qs.hdGetPersonalLotteryResult,
		commitLottery: qs.commitLottery,
		hdGetLotteryStatusInfo: qs.hdGetLotteryStatusInfo,
		getHdInquireRedPacketInformation: qs.getHdInquireRedPacketInformation,
		submitRedPacketInfo: qs.submitRedPacketInfo,
		getRedPacketRanking: qs.getRedPacketRanking,
		acceptMultivoice: qs.acceptMultivoice,
		rejectMultivoice: qs.rejectMultivoice,
		applyMultivoice: qs.applyMultivoice,
		cancelMultivoice: qs.cancelMultivoice,
		multivoiceTimeout: qs.multivoiceTimeout,
		onMultivoice: qs.onMultivoice,
		offMultivoice: qs.offMultivoice,
		multivoiceRefused: qs.multivoiceRefused,
		getSessionid: qs.getSessionid,
		hangupMultivoice: qs.hangupMultivoice,
		getChatTop: qs.getChatTop,
		hdGetChatTop: qs.getChatTop,
		handleTrack: qs.handleTrack,
		reDrawDocArea: qs.reDrawDocArea,
		refreshVideo: qs.refreshVideo,
		setLocalVideoStream: qs.setLocalVideoStream,
		initPlayerHint: qs.initPlayerHint,
		getLikeCount: qs.getLikeCount,
		addLikeCount: qs.addLikeCount,
		disconnectLike: qs.disconnectLike,
		getRewardList: qs.getRewardList,
		getRewardHistoryRecord: qs.getRewardHistoryRecord,
		getRewardSpecialEffects: qs.getRewardSpecialEffects,
		sendGift: qs.sendGift,
		disconnectGift: qs.disconnectGift,
		getCommodityList: qs.getCommodityList,
		getCommodityDetail: qs.getCommodityDetail,
		getCommodityLink: qs.getCommodityLink,
		disconnectCommodity: qs.disconnectCommodity,
		reportInvitation: qs.reportInvitation
	}
}();


